在python中列出比较

时间:2015-04-28 09:18:41

标签: python list

当我有两个列表如下

h = [{"a":1,"b":2}]
p = [{"a":1,"b":2}]

a = [d for d in h if d in p]

print(a)

# [{"a":1,"b":2}]

但当我的第一个列表改变如下时,

h = [{"a":1,"b":2,"c":5}]
p = [{"a":1,"b":2}]

a = [d for d in h if {d["a"], d["b"]} in p]  # It is not working 

print(a)
# [{"a":1,"b":2,"c":5}]  - Expected o/p

但我怎样才能实现上述目标。我的问题是,在我的第一个列表中,我可能有更多的元素,但我想只比较List1到List2的前两个元素,并找到匹配的项目。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

a = [d for d in h if {"a":d.get("a"), "b":d.get("b")} in p]  #

如果您在b中只有一个词典,那么请使用==,考虑到您只使用键ab,您必须重复一次或只有一次。

a = [d for d in h if {"a":d.get("a"), "b":d.get("b")} == {"a":1,"b":2}] 

如果h中的任何一个词组没有a或b键,则使用d.get("a")将避免出现错误。

答案 1 :(得分:1)

这是你想要的吗?

a = [d for d in h if {"a": d["a"], "b": d["b"]}  in p]