python - 单行 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 替换第二个for
,and
以及,
将代码中的部分来回移动到括号中。
解决方案
利用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'}]
推荐阅读
- c# - 使用 .NET Core 在 Linux 中通过“/bin/bash”执行 .sh(bash 脚本)文件
- python - 如何访问它的对象查询属性我知道它有 5 个属性
- r - 使用回滚和 lubridate 获取 NA 值
- reporting-services - 如果状态存在,尝试显示表达式,得到#Error
- jquery - jQuery 如果选择了下拉菜单
- c# - 如何在 Xamarin iOS 中将本地钥匙串同步到设备和 iCloud
- css - 在透明标题上使用 (-webkit-)backdrop-filter
- docker - 从谷歌应用引擎SSH执行`docker exec`时终端挂起
- firebase - Firebase 上的朋友之友
- bash - 如何在另一个变量中分配变量的值