【问题标题】:Find and replace list value in a dictionary python 3在字典python 3中查找和替换列表值
【发布时间】:2020-05-25 07:32:18
【问题描述】:

我是 python 新手。我正在尝试从下面的字典中查找并删除重复的列表值:

dict = {'happy':['sun', 'moon', 'bills' 'chocolate'], 'sad':['fail', 'test', 'bills', 'baloon'], 'random': ['baloon', 'france', 'sun'] }

我希望字典字典在从列表中删除重复项后看起来像这样

expectd_dict = {'happy':['sun', 'moon', 'chocolate', 'bills'], 'sad':['fail', 'test','baloon'], 'random': ['france] }

我在互联网上寻找解决方案,但无济于事。我尝试创建一个空列表和字典,遍历字典键和值,还遍历列表值,然后将其添加到空列表中(如果不存在),但我似乎没有得到想要的结果.

output_dict = {}
output_list = []
for key, value in d.items():
    if key not in output_dict.values():
        for i in value:
            if i not in output_list:
            output_list.append(i)
            output_dict[key] = output_list
print(output_dict)

【问题讨论】:

  • 你需要解释一下,什么让key优先具有一定的价值,即为什么sadbills而不是happy,而happy也有bills作为重复?
  • 补充上一条评论,为什么 billshappy 中删除但保留在 sad 中。同样,为什么baloon 保持悲伤但从random 中删除?
  • 对不起,我更新了问题。最高的键优先。如果happysad 中存在值,则应从sad 中删除重复值。同样,如果sadrandom 中存在值,则应从random 中删除重复值
  • 那么为什么您的预期输出在random 中有baloon 而不是在sad 中?

标签: python-3.x dictionary


【解决方案1】:

认为您希望进程列表按“快乐”->“随机”->“悲伤”的顺序排列。 在列表值中循环,检查它是否在之前的操作中看到,如果没有找到,将其添加到最终列表中,将其添加到seen_values

seen_values = set()
for key in ('happy', 'random', 'sad'):
    final_list = []
    for value in dict[key]:
        if value in seen_values:
            continue
        seen_values.add(value)
        final_list.append(value)
    dict[key] = final_list

【讨论】:

    猜你喜欢
    • 2020-01-03
    • 1970-01-01
    • 2010-11-07
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    相关资源
    最近更新 更多