【发布时间】: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]]中,a和b都是字典列表而不是字典。请更正您的问题 -
@wumm 啊当然你是对的,我自己也糊涂了
标签: python dictionary compare key-value