我有两个字典列表:
dict_list1 = [{'k1':1, 'k2':2}, {'k1':3, 'k2':4}]
dict_list2 = [{'k1':1, 'k2':2, 'k3':10}, {'k1':3, 'k2':4, 'k3':10}]
现在,对于dict_list1中的每个dict_x,我想知道在dict_list2上是否有一个dict_y,它包含来自dict_x的每个键和值。
我想不出另一种方法来做这件事:
for dict_x in dict_list1:
for dict_y in dict_list2:
count = len(dict_x)
for key, val in dict_x.items():
if key in dict_y and dict_y[key] == val:
count -= 1
if count == 0:
print('YAY')
break
发布于 2018-08-09 04:34:08
下面,我使用dict.items
view implements set
operations来检查每个d1.items()
是否存在d2.items()
,这样d1.items()
就是d2.items()
的子集
[any(d1.items() <= d2.items() for d2 in dict_list2) for d1 in dict_list1]
发布于 2018-08-09 04:30:11
您可以使用any
和all
dict_list1 = [{'k1':1, 'k2':2}, {'k1':3, 'k2':4}]
dict_list2 = [{'k1':1, 'k2':2, 'k3':10}, {'k1':3, 'k2':4, 'k3':10}]
v = [any(all(c in i and i[c] == k for c, k in b.items()) for i in dict_list2)\
for b in dict_list1]
输出:
[True, True]
https://stackoverflow.com/questions/51755131
复制相似问题