Python: Zip dict with keys
本问题已经有最佳答案,请猛点这里访问。
我有:
1 2 | list_nums = [1,18] list_chars = ['a','d'] |
我想要:
1 2 | list_num_chars = [{'num':1, 'char':'a'}, {'num':18, 'char':'d'}] |
是否有比以下更优雅的解决方案:
1 | list_num_chars = [{'num':a, 'char':b} for a,b in zip(list_nums, list_chars)] |
1 | map(dict, map(lambda t:zip(('num','char'),t), zip(list_nums,list_chars))) |
给予:
1 | [{'char': 'a', 'num': 1}, {'char': 'd', 'num': 18}] |
如果初始列表很长,您可能希望使用
声明一个新变量,该变量是dict的键
1 2 3 4 | from itertools import izip nums = [1,18] chars = ['a','d'] keys = ["num","char"] # include list of keys as an input |
我想这会给你一个更优雅的解决方案。
1 | [dict(zip(keys,row)) for row in izip(nums,chars)] |
当有更多的键时(这就是为什么我首先开始寻找这个解决方案的原因),它肯定会更优雅。
如果需要,此调整与生成器相同:
1 | (dict(zip(keys,row)) for row in izip(nums,chars)) |