如何从一组固定键的值列表中制作字典列表

Ine*_*elp 1 python dictionary list

我有一个这样的清单:

list = ['John', 18, 'Spain', 'Adam', 12, 'Hungary', 'Eve', 50, 'Greece', ...] 
Run Code Online (Sandbox Code Playgroud)

我怎样才能从中制作字典列表?

预期结果:

[{'name':'John', 'age':18, 'country':'Spain'},
 {'name':'Adam', 'age':12, 'country':'Hungary'}, 
 {'name':'Eve', 'age':50, 'country':'Greece'},
 ...]
Run Code Online (Sandbox Code Playgroud)

azr*_*zro 5

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

  • values[::3] 迭代 1 超过 3,所以只有名字
  • 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)
Run Code Online (Sandbox Code Playgroud)

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

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