如何避免覆盖字典追加?

How to avoid overwrite for dictionary append?

例如,我有:

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

现在我想再 'c':4 添加到字典中。它将覆盖现有的 'c':3.

我怎样才能 dic 喜欢:

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

您不能在一个字典中有重复的键 - 当您尝试查找某些内容时,您会期望出现什么行为?但是,您可以将列表与键相关联以存储多个对象。字典结构中的这个小改动将允许 {'c' : [3, 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]})