Python如何将嵌套字典的所有值作为单个列表[dict]获取?

2024-10-01 19:28:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解析这个列表,以获得一个包含所有度量类型数据的dicts的List[dict]

metrics_info = [
    {
        "metric_type1": [
            {
                "name": "m10",
                "score": "11"
            },
            {
                "name": "m20",
                "score": "790"
            }
        ]},
    {
        "metric_type2": [
            {
                "name": "m30",
                "score": "245"

            }
        ]}
]

现在,我已经创建了一个方法,可以获取特定度量类型的dict列表:

def parse_metrics(metrics_info: List[dict], metric_type: str) -> List[dict]:
    for item in metrics_info:
        if metric_type in item:
            return item[metric_type]

如何获取包含所有度量类型的内部字典的列表[dict]

结果应该如下所示:

[
            {
                "name": "m10",
                "score": "11"
            },
            {
                "name": "m20",
                "score": "790"
            },
            {
                "name": "m30",
                "score": "245"
            }
]

Tags: nameinfo类型列表度量typeitemmetric
3条回答

所以我对monkut的答案做了一点修改。他们返回一个列表列表。看起来你在寻找一个扁平的列表。我有两种方法,一种用于循环,另一种使用python中的函数方法

all_values= [item for _list in map(lambda _dict: list(_dict.values())[0], metrics_info) for item in _list]

all_values = []
for _dict in metrics_info:
    for value in list(_dict.values()):
        all_values.extend(value)

这两种方法都会产生您所期望的相同结果。扁平的列表

也许有一种更为奇特的方式,但他应该做到这一点:

meterics_info = [ ... ]
all_values = []
for d in metrics_info:
    all_values.extend(d.values())

另一种方法是通过列表理解:

b=[]
[b.append(y) for i in metrics_info  for x,y in i.items()]
print(b)

相关问题 更多 >

    热门问题