繁体   English   中英

如何将两个 dict 值列表与 python 中的一个特定值进行比较?

[英]How to compare a two list of dict values with one particular value in python?

我有两个字典,一个在列表中:

var_a = [{'name':"John",'number':21},{'name':"Kevin",'number':23}]
var_b = {'21':"yes"},{'24':"yes"}

我需要将 var_a 和 var_b 与 var_b 中的键与 var_a 中的数值进行比较。

我已经尝试过了,得到了 output:

for key, value in var_b.iteritems():
    for l in var_a:
        if l['number'] == key:
           print l

这需要两个循环来获得 output。 那么有什么方法可以用 python 2.7 完成这个单循环吗?

您可以使用mapvar_b键创建键集,然后仅在var_a上循环以检查var_b键集中是否存在数值

var_a = [{'name':"John",'number':21},{'name':"Kevin",'number':23}]
var_b = [{'21':"yes"},{'23':"no"}]

keys_set = set(map(lambda x: int(list(x.keys())[0]), var_b))
for i in var_a:
    if i['number'] in keys_set:
        print(i)

Output

{'name': 'John', 'number': 21}
{'name': 'Kevin', 'number': 23}

我认为您需要将 lambda function 与一个 for 循环一起使用:

for key, value in var_b.iteritems():
    result = filter(lambda d: d['id'] == key, var_a)

结果肯定会给你 output。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM