Python中使用zip迭代器生成字典并追加到列表的更简洁方法
更简洁的实现写法
推荐方案:列表推导式
这是最符合Pythonic风格的写法,直接替换你现有全部代码即可:
dictionary_big_list = [dictionary_create_function(i, j, k) for i, j, k in zip(lst1, lst2, lst3)]
优势:
- 代码行数大幅缩短,逻辑直观
- 底层实现比手动写for循环+append性能略高
- 后续如果需要增加过滤逻辑,直接在推导式末尾加判断条件即可,示例:
# 示例:仅当lst1的元素大于10时才生成对应字典 dictionary_big_list = [dictionary_create_function(i, j, k) for i, j, k in zip(lst1, lst2, lst3) if i > 10]
可选方案:生成器表达式(适用于大数据量场景)
如果你的列表长度非常大,不需要一次性把所有字典都加载到内存中,可以用生成器表达式,迭代时才逐个生成元素,内存占用极低:
dictionary_big_generator = (dictionary_create_function(i, j, k) for i, j, k in zip(lst1, lst2, lst3)) # 后续使用时直接迭代即可,比如: for item in dictionary_big_generator: # 处理item的逻辑
其他可选写法:map配合解包
也可以用map函数实现,不过可读性不如列表推导式,不做优先推荐:
dictionary_big_list = list(map(lambda x: dictionary_create_function(*x), zip(lst1, lst2, lst3)))
内容的提问来源于stack exchange,提问作者swisscheese_95
相关产品推荐
相关产品推荐

