【问题标题】:Is there an easy way to "append()" two dictionaries together in Python?有没有一种简单的方法可以在 Python 中将两个字典“附加()”在一起?
【发布时间】:2011-02-04 21:20:00
【问题描述】:

如果我有两个字典我想在 Python 中组合,即

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

如果我对它们运行更新,它会重新排序列表:

a.update(b)
{'1': 1, '3': 3, '2': 2, '4': 4}

当我真正想要的是将“b”附加到“a”的末尾时:

{'1': 1, '2': 2, '3': 3, '4': 4}

有没有一种简单的方法可以将“b”附加到“a”的末尾,而不必像这样手动组合它们:

for key in b:
    a[key]=b[key]

像 += 或 append() 这样的东西是理想的,但当然它们都不适用于字典。

【问题讨论】:

  • update() 方法是“组合”字典的正确方法,所以也许你需要解释为什么你想要你认为你想要的......你真的有理由想要一本字典有一个特定的顺序,或者你只是对你看到的行为感到困惑,但组合字典确实适合你?
  • 现在很有意义。我在想字典有一个命令,其他人提到的不正确。
  • 如果顺序对您很重要,您可以考虑使用元组列表而不是字典。否则,正如其他人提到的,总是有 OrderedDictionary。

标签: python dictionary


【解决方案1】:

python 字典没有排序 - 如果在实践中项目以特定顺序出现,那纯粹是特定实现的副作用,不应依赖。

【讨论】:

    【解决方案2】:

    字典是无序的:它们没有开头或结尾。无论您使用update 还是for 循环,最终结果仍然是无序的。

    如果您需要排序,请改用元组列表。 Python 3.1 有一个 OrderedDict 类型,它也将出现在 Python 2.7 中。

    【讨论】:

      【解决方案3】:

      字典没有排序。如果您需要订购,您可以尝试使用列表之类的方式。

      【讨论】:

        【解决方案4】:

        标准库as of Python 3.1.1 中有一个有序字典,但它的用例有限。通常,如果您使用字典,您只对键到值的映射感兴趣,而不是顺序。如果您不使用 Python 3.x,那么也有各种用于有序字典的方法,但您应该首先问自己顺序是否重要,如果重要,您是否使用了正确的数据结构。

        【讨论】:

          【解决方案5】:

          我认为您误解了字典的使用。您不访问它们的顺序或位置。您可以从密钥访问它们,在您的情况下也恰好是数字。它们是哈希表,应该像这样工作。你做得对。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-12
            • 1970-01-01
            • 2016-08-13
            • 2020-11-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-19
            相关资源
            最近更新 更多