当我有两个列表如下
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的前两个元素,并找到匹配的项目。
我该怎么做?
答案 0 :(得分:2)
a = [d for d in h if {"a":d.get("a"), "b":d.get("b")} in p] #
如果您在b中只有一个词典,那么请使用==
,考虑到您只使用键a
和b
,您必须重复一次或只有一次。
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]