gpt4 book ai didi

python - 使用列表理解对嵌套在列表中的字典进行操作

转载 作者:行者123 更新时间:2023-11-28 21:38:18 26 4
gpt4 key购买 nike

我有一个字典列表,每个字典都有一个 data 键。每个数据键包含一堆关于一个人的属性,这些属性都不是强制性的:

persons = [
{"Name": "John", "data": {"Age": 23, "Gender": "Male"}},
{"Name": "Jane", "data": {"Age": 22, "Gender": "Female"}},
{"Name": "Harry", "data": {"Age": 22}},
{"Name": "Hermione", "data": {"Gender": "Female"}},
]

我想做的是提取一个不同的年龄值列表。我是这样做的:

ages = set()
persondatas = [person['data'] for person in persons]
for persondata in persondatas:
if 'Age' in persondata:
ages.add(persondata['Age'])
ages

返回:

{22, 23}

这正是我想要的,但我认为必须有比循环遍历我使用列表理解获得的列表更好、更简洁的方法。我可以在列表理解中完成所需的工作吗?我的第一次失败尝试是这样的:
[person['data']['Age'] for person in l]
失败了:

KeyError: 'Age'

一定有更好的方法,但我一直在摆弄,无法解决。谁能帮忙?

最佳答案

您可以在您的列表理解中添加一个条件 - 用一个循环取消这两个操作。

>>> {person['data']['Age'] for person in persons if 'Age' in person['data']}
set([22, 23])

请注意我是如何使用大括号 ({}) 而不是方括号 ([]) 来表示 set comprehension 的.

关于python - 使用列表理解对嵌套在列表中的字典进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48440801/

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