python - 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完成这个单循环?
解决方案
您可以使用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}
推荐阅读
- python - 如何使用函数使用apply lambda方法对数据框中的列进行迭代和赋值
- scala - 从列数组生成动态模式
- php - PHP变量到ajax,在jQuery函数中使用变量?
- javascript - 如何在 if 语句中为用户输入添加多个选项
- android - '未定义不是一个对象(评估'props.deviceLocale')
- sql - 更改系统日期建议
- html - 如何修复:跨浏览器在 svg 中显示文本?
- android - 警报管理器延迟警报响铃的问题
- c# - 为什么此 SQL SELECT 在使用有效数据时不运行?
- javascript - 在 IE11 中没有触发拖放事件