sc2*_*c28 3 python json dictionary list
我想根据另一个键的条件(例如Gender == 'male')来总结此字典列表中所有人的年龄:
list_of_dicts= [
{"Name": "Ethan", "Gender": "male", "Age": 11},
{"Name": "Nathan", "Gender": "male", "Age": 6},
{"Name": "Sophie", "Gender": "female", "Age": 14},
{"Name": "Patrick", "Gender": "male", "Age": 11}
]
Run Code Online (Sandbox Code Playgroud)
下面的代码完成了它,但我想知道是否有更Pythonic/紧凑的方法来做到这一点?也许类似于字典列表的 SQL 查询?
total_male_age = 0
for dict in list_of_dicts:
if dict.get("Gender") == "male":
total_male_age = total_male_age + dict.get("Age")
#total_male_age = 28
Run Code Online (Sandbox Code Playgroud)
这个怎么样?
>>> sum(d['Age'] for d in list_of_dicts if d['Gender'] == 'male')
28
Run Code Online (Sandbox Code Playgroud)
在这里,从技术上讲,您正在调用sum一个生成器表达式——该表达式会过滤到Gender等于“male”的字典。
PEP 289提供了一个供进一步阅读的示例。
求乘积而不是求和:
import numpy as np
np.product([d['Age'] for d in list_of_dicts if d['Gender'] == 'male'])
Run Code Online (Sandbox Code Playgroud)
如果您想在 Python 标准库中找到产品:
from functools import reduce
from operator import mul
reduce(mul, (d['Age'] for d in list_of_dicts if d['Gender'] == 'male'), 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1827 次 |
| 最近记录: |