在python中,如何将两个dict值列表与一个特定值进行比较?
我有两个口述,列表中有一个:在python中,如何将两个dict值列表与一个特定值进行比较?,python,list,python-2.7,dictionary,for-loop,Python,List,Python 2.7,Dictionary,For Loop,我有两个口述,列表中有一个: 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():
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完成这个单循环呢?您可以使用
map
从var\u b
键创建一个键集,然后只在var\u a
上循环,检查var\u 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}
我认为您需要将lambda函数与一个for循环一起使用:
for key, value in var_b.iteritems():
result = filter(lambda d: d['id'] == key, var_a)
结果将为您提供确切的输出。数值是否唯一?var_b是一个列表。不能在列表中执行.iteritems()。请编辑您的问题是数值为unique@NickYes,edited@panien即使在编辑之后,您有
var_b={'21':“yes”},{'24':“yes”}
,这意味着var_b
是由两个字典组成的元组。你的意思是var_b={'21':“yes”,'24':“yes”}
?此代码将创建字典中每个键的集合,这些键在var_b
列表中通过map方法获取一个iterable并应用一个函数(在iterable中的每个项上)在我的例子中,lambda函数提取所有键,然后在var_a
项上循环,并检查项的数值是否在var_b
键集中,如果是,它将打印var_a
项。@Navi你意识到map
是一个循环吗?@Navi你意识到过滤器
是一个循环吗?是的快于loop@Nick