【问题标题】:How to avoid overwrite for dictionary append?如何避免覆盖字典追加?
【发布时间】:2017-08-08 09:18:03
【问题描述】:

例如,我有:

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

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

我怎样才能得到dic 喜欢:

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

【问题讨论】:

  • 您不能在字典中找到一个键两次...您将如何查找它? dic['c'] 会返回什么?
  • 也许multidict 可能是您正在寻找的数据类型。
  • 将字典中的值全部设为列表。这样,您可以将多个值与每个字典键关联(每个键都必须是唯一的)。

标签: python dictionary overwrite


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 2015-05-15
      • 1970-01-01
      • 2021-10-20
      • 2013-06-02
      • 2020-05-18
      • 2022-01-22
      • 2019-06-15
      • 1970-01-01
      相关资源
      最近更新 更多