Python中如何将一维列表与二维列表转换为字典列表?
解决方案
这事儿其实挺简单的,用Python的列表推导式搭配zip()函数就能快速搞定,一行代码就能实现需求:
lst1 = [1, 2, 3] lst2 = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']] dct = [dict(zip(lst1, sub_lst)) for sub_lst in lst2]
运行这段代码后,dct就会完全符合你想要的结构:
[{1:'a', 2:'b', 3:'c'}, {1:'d', 2:'e', 3:'f'}, {1:'g', 2:'h', 3:'i'}]
原理拆解
zip(lst1, sub_lst):每次遍历lst2里的子列表时,会把lst1的元素和子列表的元素一一配对,生成类似(1, 'a'), (2, 'b'), (3, 'c')的元组序列。dict(...):Python的dict()函数可以直接把这种元组序列转换成字典,元组的第一个元素作为键,第二个作为对应的值。- 外层的列表推导式:遍历
lst2的每一个子列表,重复上面的转换操作,最后把所有生成的字典收集成一个列表。
要是你觉得一行代码有点太紧凑,也可以写成更直观的循环形式,逻辑完全一样:
lst1 = [1, 2, 3] lst2 = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']] dct = [] for sub_lst in lst2: temp_dict = {} for key, value in zip(lst1, sub_lst): temp_dict[key] = value dct.append(temp_dict)
两种写法结果完全一致,选你看着顺眼的用就行~
内容的提问来源于stack exchange,提问作者Александр Александрович
相关产品推荐
相关产品推荐

