我正在做一个任务。无论如何,字典可以有重复的键并保存相同或不同的值。这是我正在尝试做的一个例子:
dict = {
'Key1' : 'Helo', 'World'
'Key1' : 'Helo'
'Key1' : 'Helo', 'World'
}
我尝试这样做,但是当我将任何值关联到 key1 时,它会被添加到同一个 key1。这可以用字典吗?如果不是,我可以使用什么其他数据结构来实现这个过程?
我正在做一个任务。无论如何,字典可以有重复的键并保存相同或不同的值。这是我正在尝试做的一个例子:
dict = {
'Key1' : 'Helo', 'World'
'Key1' : 'Helo'
'Key1' : 'Helo', 'World'
}
我尝试这样做,但是当我将任何值关联到 key1 时,它会被添加到同一个 key1。这可以用字典吗?如果不是,我可以使用什么其他数据结构来实现这个过程?
一个键有多个值的一种方法是使用列表字典。
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
相同的功能为了使这更容易,集合模块有一个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}})
我想你想要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
这将处理重复的键,而不是覆盖键,它会将一些东西附加到该值列表中。
键对数据是唯一的。考虑使用其他值作为键或考虑使用不同的数据结构来保存此数据。
例如: