[英]Create a list of values from nested dictionary Python
我有以下数据结构:
listionary = [{'a': [{'id': 30, 'name': 'bob'}, {'id': 50, 'name':'mike'}]},
{'b': [{'id': 99, 'name': 'guy'}, {'id': 77, 'name':'hal'}]}]
我想为每个'id'
键创建一个值列表。
ie. lst = [30, 50, 99, 77]
我知道我需要三个迭代器来遍历结构:
一个访问数组中的两个父字典,另一个访问键'a'
和'b'
的列表,最后一个访问嵌套子字典中每个id
键的值
我试过了
lst = [[x][y][y]['id'] for x, y, z in listionary]
但我得到了一个错误
ValueError: not enough values to unpack (expected 3, got 1)
有没有一种干净的方法来实现这个?
您可以在列表理解中使用 3 个for
循环来做到这一点:
listionary = [
{"a": [{"id": 30, "name": "bob"}, {"id": 50, "name": "mike"}]},
{"b": [{"id": 99, "name": "guy"}, {"id": 77, "name": "hal"}]},
]
lst = [d["id"] for d in listionary for v in d.values() for d in v]
print(lst)
印刷:
[30, 50, 99, 77]
解释:
for d in listionary
- 这将迭代 list listionary
中的所有项目( {"a":...}, {"b":...}
)
for v in d.values()
- 这将遍历这些字典中的所有项目( [{"id:...}, {"id":...}], [...]
)
for d in v
- 这将从这些列表中获取所有字典( {"id:...}, {"id":...}, ....
)
d["id"]
- 这将从键"id"
中获取值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.