我有一个列表,我需要在字典中。该列表具有重复(即将成为)具有不同值的键。如何找到这些键并将新值附加到它?
list=[q:1,w:2,q:7]
dictionary= q:1,7
w:2
提前致谢
答案 0 :(得分:9)
在字典列表中创建值,以便:
dictionary = {'q': [1, 7],
'w': [2]
}
等。即,您的单项值是单项列表。这意味着当您有另一个'q'
时,您可以执行此操作:
dictionary['q'].append(5)
除非dictionary['q']
首次使用KeyError
,否则请改用setdefault
:
dictionary.setdefault('q', []).append(5)
所以现在你只需要迭代输入列表中的每个键值对,并为每个键执行上述操作。
您可能希望dictionary
成为:
dictionary = collections.defaultdict(list)
所以你可以做dictionary['q'].append(5)
- 它将与上面相同,在所有方面都是第一个。如果在解析原始列表并正确设置所有值后,您的字典将如下所示:
dictionary = {'q': [1, 7, 5]
'w': [2, 8, 10, 80]
'x': [3]
}
你尝试print(dictionary['y'])
。你期望发生什么?如果您使用普通字典和setdefault
,则会将其视为错误,因此会引发KeyError
。如果您使用defaultdict
,它将打印一个空列表。无论哪种方法对代码更有意义,都应该确定对代码进行编码的方式。