gpt4 book ai didi

python - 字典列表中值子集的平均值

转载 作者:太空宇宙 更新时间:2023-11-04 09:56:54 25 4
gpt4 key购买 nike

我有一个字典列表。我想要年龄小于 25 岁的人的平均年龄。

我知道我的除数是错误的,但我不确定如何在理解范围内调整它。

我得到 81/8 = 10.125。我应该得到 81/5 = 16.2。如何获得除数以匹配添加的元素数?

people = [{'name': 'John', 'age': 47, 'hobbies': ['Python', 'cooking', 'reading']},
{'name': 'Mary', 'age': 16, 'hobbies': ['horses', 'cooking', 'art']},
{'name': 'Bob', 'age': 14, 'hobbies': ['Python', 'piano', 'cooking']},
{'name': 'Sally', 'age': 11, 'hobbies': ['biking', 'cooking']},
{'name': 'Mark', 'age': 54, 'hobbies': ['hiking', 'camping', 'Python', 'chess']},
{'name': 'Alisa', 'age': 52, 'hobbies': ['camping', 'reading']},
{'name': 'Megan', 'age': 21, 'hobbies': ['lizards', 'reading']},
{'name': 'Amanda', 'age': 19, 'hobbies': ['turtles']},
]


print(float(sum(d['age'] for d in people if d['age'] < 25)) / len(people))

最佳答案

最简单的解决方案是使用 numpy有条件的列表理解:

import numpy as np

>>> np.mean([p['age'] for p in people if 'age' in p and p['age'] < 25])
16.199999999999999

使用纯 Python 解决方案,您应该在评估集合中的每个元素时跟踪总数和计数。这减少了内存占用,因为您不需要存储所有符合条件的值。请注意,我在枚举中使用了生成器。

total_age = 0.
for n, age in enumerate((p['age'] for p in people if 'age' in p and p['age'] < 25), start=1):
total_age += age
>>> print(total_age / n)
16.2

关于python - 字典列表中值子集的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45447858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com