如何避免覆盖字典追加?
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]})
例如,我有:
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]})