【问题标题】:Compare dictionaries in python [closed]比较python中的字典[关闭]
【发布时间】:2019-01-03 18:03:44
【问题描述】:
dict1 = {
    key1: value1,
    key2: value2,
    key3: value3
}

dict2 = {
    key1: value1,
    key4: value4,
    key3: value2
}
fdict = {}

当我比较上面两个字典时,我想将key1:value1存储到fdict字典中:

我的尝试:

for key in dict1.keys():
    if key in dict2.keys():
        if dict1[key] == dict2[key]:
            fdict[key] == dict1[key]

我在尝试上述方法时遇到“关键错误”.. 有什么建议吗?

【问题讨论】:

  • contentnew_dict 定义在哪里?
  • 好吧,因为你没有提供变量或者你没有用引号括起来,所以你的键都不存在
  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。您发布的代码存在语法和语义错误,使其无法达到您发布的错误状态。
  • 除了great answer below,还可以查看this one
  • 您确定fdict 包含您尝试比较的key 吗?附言如果我正确理解您的需要,请将最后一行中的 == 替换为 =

标签: python python-3.x dictionary


【解决方案1】:

首先,您会得到KeyError,因为您尝试查找两个字典中都不存在的键。

听起来你想计算两个字典的交集。在这种情况下,就足够了:

>>> a = dict(a=1, b=2, c=3)
>>> b = dict(b=2, c=3, d=4)
>>> dict(a.items() & b.items())
{'c': 3, 'b': 2}

【讨论】:

  • 等等,这行得通吗?
  • 没问题,在解释器中输入就行了。
  • 这是一些不错的 Python!
  • 老实说,我不知道 dict 视图有类似集合的交集/联合运算符
  • 是的,这很酷。它也适用于联合 (|) 和差异 (^)。
猜你喜欢
  • 1970-01-01
  • 2014-02-20
  • 2019-09-09
  • 1970-01-01
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
相关资源
最近更新 更多