首页 > 解决方案 > python - 如何将两个dict值列表与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 中的数值进行比较。

我试过这个并得到输出:

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

这需要两个循环来获得输出。那么有没有办法用python 2.7完成这个单循环?

标签: pythonlistpython-2.7dictionaryfor-loop

解决方案


您可以使用map从键​​创建键集var_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)

输出

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

推荐阅读