如何避免覆盖字典追加?

时间:2017-03-17 00:05:57

标签: python dictionary overwrite

例如,我有:

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

现在,我希望将另一个'c':4添加到词典中。它会覆盖现有的'c':3

我怎样才能得到dic

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

2 个答案:

答案 0 :(得分:3)

字典键必须是唯一的。但是您可以将列表作为值,以便可以在其中存储多个值。这可以通过使用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]})

答案 1 :(得分:0)

您不能在单个词典中包含重复的键 - 当您尝试查找某些内容时,您会期望什么行为?但是,您可以将列表与键关联以存储多个对象。字典结构中的这一小变化将允许{'c' : [3, 4]},最终实现您正在寻找的行为。