我有兩個列表:比較兩個列表項,其中列表包含字典項
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