2017-03-17 143 views
-2

例如,我有:如何避免覆盖字典追加?

dic={'a': 1, 'b': 2, 'c': 3} 

现在,我想另一个'c':4加入到字典中。它会覆盖现有的'c':3

我怎么能拿dic像:

dic={'a': 1, 'b': 2, 'c': 3, 'c':4} 
+6

在字典中不能有两次键......您会如何查看它? 'dic ['c']'会返回什么? – mgilson

+0

也许[multidict](https://pypi.python.org/pypi/multidict)可能是您要查找的数据类型。 –

+0

使词典中的值全部为列表。这样,您可以将多个值与每个字典关键字(必须每个都是唯一的)相关联。 – martineau

回答

2

字典键必须是唯一的。但是你可以有一个列表作为一个值,所以你可以存储多个值。这可以通过使用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]}) 
+0

非常感谢!这正是我需要的 – user815408

0

你不能有一个字典中重复的键 - 你所期望的行为,当你试图寻找的东西了?但是,您可以将列表与键关联以存储多个对象。字典结构中的这一小改动将允许{'c' : [3, 4]},它最终完成您正在寻找的行为。