我正在完成一项任务。无论如何,字典可以有重复的键并保持相同或不同的值。这是我正在尝试做的一个例子:
dict = {
'Key1' : 'Helo', 'World'
'Key1' : 'Helo'
'Key1' : 'Helo', 'World'
}
我尝试过这样做但是当我将任何值与key1相关联时,它会被添加到同一个key1中。 这可能用字典吗?如果不是我可以用什么其他数据结构来实现这个过程?
答案 0 :(得分:3)
将一个键赋予多个值的一种方法是使用列表字典。
x = { 'Key1' : ['Hello', 'World'],
'Key2' : ['Howdy', 'Neighbor'],
'Key3' : ['Hey', 'Dude']
}
要获取所需的列表(或创建一个新列表),我建议使用setdefault。
my_list = x.setdefault(key, [])
示例:
>>> x = {}
>>> x['abc'] = [1,2,3,4]
>>> x
{'abc': [1, 2, 3, 4]}
>>> x.setdefault('xyz', [])
[]
>>> x.setdefault('abc', [])
[1, 2, 3, 4]
>>> x
{'xyz': [], 'abc': [1, 2, 3, 4]}
defaultdict
获得相同的功能为了简化这一过程,collections module有一个defaultdict
对象,可以简化此操作。只需传递一个构造函数/工厂。
from collections import defaultdict
x = defaultdict(list)
x['key1'].append(12)
x['key1'].append(13)
您还可以使用词典词典甚至词典词典。
>>> from collections import defaultdict
>>> dd = defaultdict(dict)
>>> dd
defaultdict(<type 'dict'>, {})
>>> dd['x']['a'] = 23
>>> dd
defaultdict(<type 'dict'>, {'x': {'a': 23}})
>>> dd['x']['b'] = 46
>>> dd['y']['a'] = 12
>>> dd
defaultdict(<type 'dict'>, {'y': {'a': 12}, 'x': {'a': 23, 'b': 46}})
答案 1 :(得分:0)
我想你想要collections.defaultdict
:
from collections import defaultdict
d = defaultdict(list)
list_of_values = [['Hello', 'World'], 'Hello', ['Hello', 'World']]
for v in list_of_values:
d['Key1'].append(v)
print d
这将处理重复的键,而不是覆盖键,它将附加到该值列表。
答案 2 :(得分:0)
密钥对数据是唯一的。考虑为密钥使用其他值或考虑使用不同的数据结构来保存此数据。
例如: