如何让Python字典的值以列表[]而非元组()包裹?技术咨询
解决Python字典值为列表而非元组的问题
没问题!你遇到的情况是因为zip(*values)返回的是元组迭代器,所以当你用dict(zip(keys, ...))构建字典时,值默认会是元组类型。要让值变成列表,只需要把每个zip生成的元组转换成列表就可以了。
修改后的代码示例
第一种写法(用生成器表达式,内存更高效):
keys = ["field1", "field2", "field3"] values = [[1,2,3], [3,4,5], [6,7,8]] dictionary = dict(zip(keys, (list(item) for item in zip(*values))))
第二种写法(用列表推导式,更直观):
keys = ["field1", "field2", "field3"] values = [[1,2,3], [3,4,5], [6,7,8]] dictionary = dict(zip(keys, [list(item) for item in zip(*values)]))
原理说明
zip(*values)的作用是把values里的子列表按索引位置“打包”:
- 原
values是[[1,2,3], [3,4,5], [6,7,8]] zip(*values)会生成三个元组:(1,3,6)、(2,4,7)、(3,5,8)
我们通过list(item)把每个元组转换成列表,这样最终字典的值就会是你期望的[]包裹的列表类型了。
运行后得到的结果就是:
{'field1': [1, 3, 6], 'field2': [2, 4, 7], 'field3': [3, 5, 8]}
内容的提问来源于stack exchange,提问作者user3877654
相关产品推荐
相关产品推荐

