[英]python: a list comprehension over a list of dictionaries of list of dictionary items
我知道这是一个最糟糕的标题,但让我通过示例来解释这个问题。 我的数据是:
data = [
{
"subdata": [ # subdata various number of dictionaries of same keys, including "ext_id", ...
{
"ext_id": "12345", # ... but of different values
...
},
{
"ext_id": "54321",
...
}
],
...
},
... # and many other dictionary items with "subdata", which in turn contains
# a list of dictionaries containing "ext_id" and corresponding values
]
我的目标是列出“子数据”中的一对“ext_id”,即
goal = [
("12345", "54321"),
(...)
]
我知道这个目标可以使用 for 循环,但想知道列表推导是否可行? 我试过这个: goal = [x["ext_id"] for y in data for x in y["subdata"]]
并得到一个扁平化版本的目标["12345", "54321", ...]
而不是二维列表。
任何建议表示赞赏。
如果你有这样的数据结构:
data = [
{
"subdata": [
{
"ext_id": "12345",
},
{
"ext_id": "54321",
}
],
},
{
"subdata": [
{
"ext_id": "98765",
},
{
"ext_id": "56789",
}
],
}
]
然后要获得您想要的 output,您可以使用列表推导(以及生成器推导),如下所示:
goal = [tuple(dict_['ext_id'] for dict_ in subdata['subdata']) for subdata in data ]
goal
将包含:
[('12345', '54321'), ('98765', '56789')]
是的,您可以在此处使用列表理解。 以下代码将为您提供所需的结果
[tuple(sub_dict.get('ext_id') for sub_dict in dictionary.get('subdata')) for dictionary in data]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.