python - 将 2 个列表转换为 dicts 列表
问题描述
我有 2 个列表:
keys = ['p', 'e']
vals = [['p1', 'p2', 'p3'], ['e1', 'e2', 'e3']]
如何迭代它们以创建这样的字典列表:
result = [{'p':'p1', 'e':'e1'}, {'p':'p2', 'e':'e2'}, {'p':'p3', 'e':'e3'}]
解决方案
keys = ['p', 'e']
vals = [['p1', 'p2', 'p3'], ['e1', 'e2', 'e3']]
list_of_dicts = [ { keys[0]: val1, keys[1]: val2} for val1, val2 in zip(vals[0], vals[1]) ]
print(list_of_dicts)
编辑:
在一般情况下:
keys = ['p', 'e', 'z']
vals = [['p1', 'p2', 'p3'], ['e1', 'e2', 'e3'], ['z1', 'z2', 'z3']]
list_of_dicts = []
# spread vals array
for values in zip(*vals):
temp_dict = {}
for key, val in zip(keys, values):
temp_dict[key] = val
list_of_dicts.append(temp_dict)
print(list_of_dicts)
印刷:
[{'p': 'p1', 'e': 'e1', 'z': 'z1'}, {'p': 'p2', 'e': 'e2', 'z': 'z2'}, {'p': 'p3', 'e': 'e3',
'z': 'z3'}]
推荐阅读
- python - 使用 MSI 的 Azure SQL Server 连接 - Django
- c# - 实现一个 .net core worker 服务编排器
- amazon-web-services - 可以使用本地负载均衡器连接到 AWS EC2 Autoscaling 组吗?
- r - 努力过滤R中的数据
- java - 如何指定最小大小的根级数组和每个对象匹配模式
- laravel - 在 Laravel 7 中禁用 HTTPS
- angular - Angular 从嵌套的动态路由中获取路由参数
- python - 日文字符无法从 Python3 中的 unicode 解码
- eslint - 值...不应该有额外的属性
- python - 将传感器读入python数组并用PHP解析