我有两个列表:比较两个列表项,其中列表包含字典项
a = [{'1':'value1'},{'2':'value2'}]
b = [{'x':'value1'},{'y':'hello'},{'z':'value1'}]
我想这两个列表,如果value1
匹配,那么它将返回列表b
的所有键之间的比较。我想这样的结果:
c= ['x','z']
我有两个列表:比较两个列表项,其中列表包含字典项
a = [{'1':'value1'},{'2':'value2'}]
b = [{'x':'value1'},{'y':'hello'},{'z':'value1'}]
我想这两个列表,如果value1
匹配,那么它将返回列表b
的所有键之间的比较。我想这样的结果:
c= ['x','z']
我读这是:“在名单b
返回从字典d
所有键k
的列表,使得k
在d
值相同的值从列表a
“
val_set = {v for d in a for v in d.values()}
output = [k for d in b for k, v in d.items() if v in val_set]
print(output)
#['x', 'z']
更好的实施! – MYGz
在一些字典中一些关键的您可以实现这样的事情:
a = [{'1':'value1'},{'2':'value2'}]
b = [{'x':'value1'},{'y':'hello'},{'z':'value1'}]
c = [w.keys()[0] for q in a for w in b if q.values()[0] == w.values()[0]]
print(c)
输出:
['x', 'z']
即相当于:
a = [{'1':'value1'},{'2':'value2'}]
b = [{'x':'value1'},{'y':'hello'},{'z':'value1'}]
c = []
for q in a:
for w in b:
if q.values()[0] == w.values()[0]:
c.append(w.keys()[0])
print(c)
为每个值,或者对于所有的值? – wim
您的物品结构很奇怪 - a'和'b'可以是多个项目的词典而不是单个项目词典的列表吗? – asongtoruin