python - Python 元组列表到字典,其中字典的键来自另一个列表
问题描述
我想将元组列表转换为字典,其中字典的键来自另一个列表。
g = [('1002296714', '20060515', '700'),
('1002296064', '20081201', '100'),
('1002296761', '20200803', '308'),
('1002295811', '20030415', '110'),
('1002296132', '20200803', '100')]
m = ['a', 'b', 'c']
所需的输出:
[{m[0]: i[0],
m[1]: i[1],
m[2]: i[2]}
for i in g]
[{'a': '1002296714', 'b': '20060515', 'c': '700'},
{'a': '1002296064', 'b': '20081201', 'c': '100'},
{'a': '1002296761', 'b': '20200803', 'c': '308'},
{'a': '1002295811', 'b': '20030415', 'c': '110'},
{'a': '1002296132', 'b': '20200803', 'c': '100'}]
上面有没有更好的写法?元组中的元素数量最多可以达到 6 个(列表“m”中的键数量相应增加)
解决方案
您必须使用以下方法并行迭代zip
:
[{z: y for y, z in zip(x, m)} for x in g]
或更简单:
[dict(zip(m, x)) for x in g]
推荐阅读
- c++ - 使用类、对象和构造函数 / C++
- c++ - campare 一个长变量,INT_MAX + 1
- javascript - 我可以将反应应用添加到 app.html 而不是 index.html
- excel - 嵌套Excel公式修改问题
- javascript - php中提交表单的计数器
- javascript - 将每个单词的第一个和最后一个字母大写的功能不起作用
- sql - 选择“高”列中的前 5 个最大记录,并从同一查询中的“低”列和按股票名称分区的同一个表中选择 5 个最小记录
- vue.js - Apollo 订阅在客户端不起作用
- mysql - 为什么列中有值为 1 时仍选择值为 NULL 的行
- git - 使用 shell 脚本更改 *n* 次提交的 git 历史记录(提交日期)