【发布时间】:2021-06-18 13:33:40
【问题描述】:
我正在与 dict 理解相处并试图了解以下 2 个 dict 理解是如何工作的:
select_vals = ['name', 'pay']
test_dict = {'data': [{'name': 'John', 'city': 'NYC', 'pay': 70000}, {'name': 'Mike', 'city': 'NYC', 'pay': 80000}, {'name': 'Kate', 'city': 'Houston', 'pay': 65000}]}
dict_comp1 = [{key: item[key] for key in select_vals } for item in test_dict['data'] if item['pay'] > 65000 ]
上面的行让我明白了
[{'name': 'John', 'pay': 70000}, {'name': 'Mike', 'pay': 80000}]
dict_comp2 = [{key: item[key]} for key in select_vals for item in test_dict['data'] if item['pay'] > 65000 ]
上面的行让我明白了
[{'name': 'John'}, {'name': 'Mike'}, {'pay': 70000}, {'pay': 80000}]
在 for 循环中编写时,这两个 o/ps 有何不同?当我在 for 循环中执行时
dict_comp3 = []
for key in select_vals:
for item in test_dict['data']:
if item['pay'] > 65000:
dict_comp3.append({key: item[key]})
print(dict_comp3)
上面的行让我和 dict_comp2 一样
[{'name': 'John'}, {'name': 'Mike'}, {'pay': 70000}, {'pay': 80000}]
如何在 for 循环中将 o/p 作为 dict_comp1 获取?
【问题讨论】:
-
只有第一个包含字典理解。两者都是列表推导,第一个包含字典推导,另一个没有
-
所以,
{key: item[key] for key in select_vals }是一个字典理解。{key: item[key]}不是 -
确实如此。它们是列表推导,我从初始 dict 对象中提取列表。仍在尝试了解调用 for 循环的顺序。猜猜Paaksing的答案澄清了它:-)
标签: python python-3.x dictionary-comprehension