Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较列表中包含字典项的两个列表项_Python - Fatal编程技术网

Python 比较列表中包含字典项的两个列表项

Python 比较列表中包含字典项的两个列表项,python,Python,我有两份清单: a = [{'1':'value1'},{'2':'value2'}] b = [{'x':'value1'},{'y':'hello'},{'z':'value1'}] 我想比较这两个列表,如果value1匹配,那么它将返回listb的所有键。我想要这样的结果: c= ['x','z'] a = [{'1':'value1'},{'2':'value2'}] b = [{'x':'value1'},{'y':'hello'},{'z':'value1'}] c = [w.k

我有两份清单:

a = [{'1':'value1'},{'2':'value2'}]
b = [{'x':'value1'},{'y':'hello'},{'z':'value1'}]
我想比较这两个列表,如果
value1
匹配,那么它将返回list
b
的所有键。我想要这样的结果:

c= ['x','z']
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)
我的理解是:“从字典
d
列表
b
中返回所有键
k
的列表,这样
d
中的
k
的值与列表
a
中某个字典中某个键的值相同。”


您可以实现如下内容:

c= ['x','z']
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)

对于每个值,还是所有值?您的项目结构很奇怪,
a
b
是否可以是多个项目的字典,而不是单个项目的字典列表?更好的实现!