例如,我有:如何避免覆盖字典追加?
dic={'a': 1, 'b': 2, 'c': 3}
现在,我想另一个'c':4
加入到字典中。它会覆盖现有的'c':3
。
我怎么能拿dic
像:
dic={'a': 1, 'b': 2, 'c': 3, 'c':4}
例如,我有:如何避免覆盖字典追加?
dic={'a': 1, 'b': 2, 'c': 3}
现在,我想另一个'c':4
加入到字典中。它会覆盖现有的'c':3
。
我怎么能拿dic
像:
dic={'a': 1, 'b': 2, 'c': 3, 'c':4}
字典键必须是唯一的。但是你可以有一个列表作为一个值,所以你可以存储多个值。这可以通过使用collections.defaultdict
来完成,如下所示。 (从IPython会话复制的示例)
In [1]: from collections import defaultdict
In [2]: d = defaultdict(list)
In [3]: d['a'].append(1)
In [4]: d['b'].append(2)
In [5]: d['c'].append(3)
In [6]: d['c'].append(4)
In [7]: d
Out[7]: defaultdict(list, {'a': [1], 'b': [2], 'c': [3, 4]})
非常感谢!这正是我需要的 – user815408
你不能有一个字典中重复的键 - 你所期望的行为,当你试图寻找的东西了?但是,您可以将列表与键关联以存储多个对象。字典结构中的这一小改动将允许{'c' : [3, 4]}
,它最终完成您正在寻找的行为。
在字典中不能有两次键......您会如何查看它? 'dic ['c']'会返回什么? – mgilson
也许[multidict](https://pypi.python.org/pypi/multidict)可能是您要查找的数据类型。 –
使词典中的值全部为列表。这样,您可以将多个值与每个字典关键字(必须每个都是唯一的)相关联。 – martineau