如何用Python将字典{ a:[1,2,3], b:[4,5,6] }转为{1:4,2:5,3:6}?
字典映射转换:将{a:[1,2,3], b:[4,5,6]}转为{1:4,2:5,3:6}
正确实现方式
直接用zip结合字典推导式就能搞定,核心是明确取出输入字典中两个列表来配对:
input_dict = {'a': [1, 2, 3], 'b': [4, 5, 6]} output_dict = {key: val for key, val in zip(input_dict['a'], input_dict['b'])}
执行后output_dict就是{1: 4, 2: 5, 3: 6}。
为什么你之前的zip尝试没成功?
大概率是没正确指定要配对的两个列表。比如如果直接对整个字典用zip,只会遍历字典的键('a'和'b'),没法得到需要的元素配对。必须明确传入input_dict['a']和input_dict['b']这两个列表给zip,它才会把两个列表对应位置的元素打包成元组,供字典推导式生成键值对。
正确的循环实现(非推导式)
如果不用字典推导式,循环的正确写法是直接遍历zip后的键值对,逐个添加到空字典中,而不是用列表追加:
input_dict = {'a': [1, 2, 3], 'b': [4, 5, 6]} output_dict = {} for key, val in zip(input_dict['a'], input_dict['b']): output_dict[key] = val
内容的提问来源于stack exchange,提问作者sriyam
相关产品推荐
相关产品推荐

