将列表值应用于字典列表
Applying list values to a list of dictionaries
假设我有一个字典列表,如下所示:
final_list = [{'city': 'value', 'population': 'value'}, {'city': 'value', 'population': 'value'}, {'city': 'value', 'population': 'value'}]
我有一个列表列表,如下所示:
input_list = [['London', 'New York', 'San Francisco'], [8908081, 8398748, 883305]]
我正在尝试将正确的值从 input_list
映射到 final_list
,但我不知道如何映射。我想它会是这样的:
n = 0
while n < len(final_list):
for category in input_list:
for section in final_list:
# then here, somehow say
# for the nth item in each of the sections, update the value to nth item in category
# then increment n
如有任何帮助,我们将不胜感激!提前致谢:)
这是一个可能的解决方案:
final_list = [{'city': c, 'population': p} for c, p in zip(*input_list)]
这里是final_list
的内容:
[{'city': 'London', 'population': 8908081},
{'city': 'New York', 'population': 8398748},
{'city': 'San Francisco', 'population': 883305}]
您甚至可以仅使用 function-based 方法来做一些更奇特的事情。这适用于您可能需要的 任何 个键。
from itertools import cycle
keys = ('city', 'population')
final_list = list(map(dict, zip(cycle([keys]), zip(*input_list))))
Riccardo Bucco 的解决方案可行,但如果您希望它适用于任何类别(不仅是城市和人口),此代码将适用:
final_list = [{'city': 'value', 'population': 'value'}, {'city': 'value', 'population': 'value'}, {'city': 'value', 'population': 'value'}]
input_list = [['London', 'New York', 'San Francisco'], [8908081, 8398748, 883305]]
for i in range(len(final_list)):
for k in range(len(list(final_list[i].keys()))):
final_list[i][list(final_list[i].keys())[k]] = input_list[k][i]
print(final_list)
假设我有一个字典列表,如下所示:
final_list = [{'city': 'value', 'population': 'value'}, {'city': 'value', 'population': 'value'}, {'city': 'value', 'population': 'value'}]
我有一个列表列表,如下所示:
input_list = [['London', 'New York', 'San Francisco'], [8908081, 8398748, 883305]]
我正在尝试将正确的值从 input_list
映射到 final_list
,但我不知道如何映射。我想它会是这样的:
n = 0
while n < len(final_list):
for category in input_list:
for section in final_list:
# then here, somehow say
# for the nth item in each of the sections, update the value to nth item in category
# then increment n
如有任何帮助,我们将不胜感激!提前致谢:)
这是一个可能的解决方案:
final_list = [{'city': c, 'population': p} for c, p in zip(*input_list)]
这里是final_list
的内容:
[{'city': 'London', 'population': 8908081},
{'city': 'New York', 'population': 8398748},
{'city': 'San Francisco', 'population': 883305}]
您甚至可以仅使用 function-based 方法来做一些更奇特的事情。这适用于您可能需要的 任何 个键。
from itertools import cycle
keys = ('city', 'population')
final_list = list(map(dict, zip(cycle([keys]), zip(*input_list))))
Riccardo Bucco 的解决方案可行,但如果您希望它适用于任何类别(不仅是城市和人口),此代码将适用:
final_list = [{'city': 'value', 'population': 'value'}, {'city': 'value', 'population': 'value'}, {'city': 'value', 'population': 'value'}]
input_list = [['London', 'New York', 'San Francisco'], [8908081, 8398748, 883305]]
for i in range(len(final_list)):
for k in range(len(list(final_list[i].keys()))):
final_list[i][list(final_list[i].keys())[k]] = input_list[k][i]
print(final_list)