【发布时间】:2013-12-10 10:59:15
【问题描述】:
我想知道你是否可以帮助我。
我有两个包含字典的列表,在大多数情况下,这些键是相同的。请参阅下面的简要示例:
x1 = [{'a':1,'b':"cat"},{'a':2,'b':"parrot"},...]
x2 = [{'a':2,'b':"dog"},{'a':1,'b':"fish"},...]
现在我想比较基于键的值,即键 a,但是两个列表的长度并不总是相同的。如果存在对应的字典,即 x1[0]['a'] == x2[1]['a'],则键 a 将始终在两个字典中。
如何根据键 a 比较这些字典,以便我可以首先丢弃 x1 中未出现在 x2 中的那些字典,反之亦然。然后确定某些值是否出现在两个字典中,然后将其记录在数据库中,这里不需要。
我当时的想法是将这些字典组合成一个基于键 a 的列表中的元组。然后遍历它并比较这些值。这可能不是最好的方法,所以如果你有更好的想法,请随意。 :)
[编辑]
我没有清楚地表达这个问题,对不起。我希望做的是;首先:根据关键字 a 匹配字典。第二:忽略那些不匹配的(key a)。第三:比较键b。第四:根据b的比较更新数据库。
感谢所有回答的人。
我的答案是这样的:
“我认为列表组合可以很好地构建一个包含来自x1 的字典的元组,该字典与来自x2 的字典相对应,然后遍历每个元组比较键 b,但我认为它可能太慢了。 "
我认为这不是一个很好的方法。所以这就是我在这里的原因:)
提前谢谢你。
【问题讨论】:
-
请描述您想要的结果。比较所有对很容易,但是应该如何处理所有这些比较的结果?
-
如果列表不一样长会发生什么(如您所说)?
-
你能解释一下这个说法吗?
The key a will always be in both dictionaries if there is a corresponding dictionary。你的例子不是很有帮助。 -
@Alfe 已编辑,谢谢。
-
@Abhijit 表示对应的字典并不总是存在,即 x1[n]['a'] 可能 = 57 并且 x2 没有匹配的字典,因此忽略 x1[n]。这有帮助吗?
标签: python list dictionary compare