首页 > 解决方案 > 单行 for 循环构建具有多个值的字典列表

问题描述

我正在尝试将两个数组一起映射到字典列表。像这样:

a_list = [1, 2, 3]
b_list = ["a", "b", "c"]

d = [{"key1": a, "key2": b} for a in a_list for b in b_list]
>> [{"key1": 1, "key2": "a"}, {"key1": 2, "key2": "b"}, {"key1": 3, "key2": "c"}]

但是,这给出了:

[{"key1": 1, "key2": "a"}, {"key1": 1, "key2": "b"}, [...] {"key1": 3, "key2": "b"}, {"key1": 3, "key2": "c"}]

我尝试用 和 a 替换第二个forand以及,将代码中的部分来回移动到括号中。

标签: pythonarraysdictionary

解决方案


利用zip

a_list = [1, 2, 3]
b_list = ["a", "b", "c"]
d = [{"key1": a, "key2": b} for (a, b) in zip(a_list, b_list)]
print(d)  # [{'key1': 1, 'key2': 'a'}, {'key1': 2, 'key2': 'b'}, {'key1': 3, 'key2': 'c'}]

推荐阅读