繁体   English   中英

从嵌套字典创建值列表 Python

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM