【问题标题】:Comparing values in two dictionaries when keys are different当键不同时比较两个字典中的值
【发布时间】:2014-05-27 13:34:10
【问题描述】:

我需要用不同的键比较两个字典之间的值,并将结果放在第三个字典中。输入:

a={1:[0,0], 2:[1,0], 3:[1,2]}
b={4:[1,2], 5:[1,3]}

输出:我想要两个输出字典,它们都有从“b”复制的键。在所有情况下,我都想忽略条目“0”。第一个输出显示 'a' 中有多少键与 b 中的键具有完全相同的值。

c={4:3, 5:0}

第二个输出字典显示 'a' 中有多少个键有 1 个(并且只有 1 个)值与 b 中的键相同。

d={4:[2], 5:[2,3]}

我试过这样做:

c=dict.fromkeys(b.keys())
d=dict.fromkeys(b.keys())

for k, v in b.iteritems():
    TST_s, TST_d= v[0], v[1]
    for each, every in a.iteritems():
        TRN_s, TRN_d= every[0], every[1]
        if TST_s == TRN_s and TST_d==TRN_d:
            c[k].append(each)
        elif TST_s == TRN_s and TST_d!=TRN_d:
            d[k].append(each)
        elif TST_s!= TRN_s and TST_d==TRN_d:
            d[k].append(each)
        else:
            pass

但我得到了

AttributeError: 'NoneType' object has no attribute 'append'

任何帮助将不胜感激!

PS。我知道代码可以简化,但在编程方面我不是很有天赋,而且我还没有考虑到我想在以后删除的“0”。目前我只想让它产生输出......

【问题讨论】:

  • 问题是什么?错误似乎很明显
  • @wumm 为什么要回滚?
  • @TimCastelijns 您不应该更改原始代码,特别是不要更正任何错误。最好发表评论,以便作者了解问题所在。 stackoverflow.com/help/editing
  • 例如,在您的帖子b=[4:[1,2], 5:[1,3]] 中,ab 都是字典列表而不是字典。请更正您的问题
  • @wumm 啊当然你是对的,我自己也糊涂了

标签: python dictionary compare key-value


【解决方案1】:

c[k] 和 d[k] 为 None 因为 dict.fromkeys(b.keys()) 返回 {4:None, 5:None}

【讨论】:

  • 我明白了...非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多