首页 > 解决方案 > 如何从一组固定键的值列表中制作字典列表

问题描述

我有一个这样的列表:

list = ['John', 18, 'Spain', 'Adam', 12, 'Hungary', 'Eve', 50, 'Greece', ...] 

如何从中制作字典列表?

预期结果:

[{'name':'John', 'age':18, 'country':'Spain'},
 {'name':'Adam', 'age':12, 'country':'Hungary'}, 
 {'name':'Eve', 'age':50, 'country':'Greece'},
 ...]

标签: pythonlistdictionary

解决方案


您可以使用zip不同的值切片

  • values[::3]在 3 上迭代 1,所以只有名称
  • values[1::3]从索引 1 开始迭代 1 到 3,所以只有年龄
  • values[2::3]从索引 2 开始迭代 1 到 3,所以只有国家
values = ['John', 18, 'Spain', 'Adam', 12, 'Hungary', 'Eve', 50, 'Greece']
list2 = []

for name, age, country in zip(values[::3], values[1::3], values[2::3]):
    list2.append({'name': name, 'age': age, 'country': country})

print(list2)

您还可以使用dict+zip来构建字典keys+values

list2 = [
    dict(zip(['name', 'age', 'country'], vals))
    for vals in zip(values[::3], values[1::3], values[2::3])
]

推荐阅读