构建字典列表

Constructing a list of dictionaries

我有这种格式的数据;

my_dict = {
    'data1':[
        {'age':32,'height':43,'weight':67},
        {'age':21,'height':33,'weight':34}
    ],
    'data2':[
        {'name':'james','department':'web'},
        {'name':'Joe','department':'social'}
    ]
}

我想获取年龄、体重和姓名。如何构建所有记录的字典列表? 例如)

data = [{'age':32, 'weight':43, 'name':'james'},
        {'age':32, 'weight':33, 'name':'joe'}    ]

任何帮助将不胜感激。

这是一种方法来做你想做的事。我们制作 data 一个空 dict 的列表,然后根据其中一个数据列表中的 dict 的索引,我们更新 [=] 中相应的 dict 12=]列表。

# list of empty dicts
data = [{} for i in range(2)]
# holds what info we want
select = {'age', 'weight', 'name'}
for k in my_dict:
    for idx, i in enumerate(my_dict[k]):
        data[idx].update({k: v for k, v in i.items() if k in select})

print(data)

输出

[{'age': 32, 'name': 'james', 'weight': 67},
 {'age': 21, 'name': 'Joe', 'weight': 34}]

有多种方法可以做到这一点。一种易于理解的方法是使用 zip 迭代器执行 for 循环:

data = []

for data1, data2 in zip(my_dict.get('data1'), my_dict.get('data2')):
    data.append({'age':data1.get('age'),
                 'weight':data1.get('weight'),
                 'name':data2.get('name')})