如何将多个列表合并转换为字典?
多列表配对生成字典解决方案
Python 内置的
zip()函数本身支持传入任意数量的可迭代对象,并非仅支持两组配对,每次迭代会返回所有输入可迭代对象对应位置的元素组成的元组,刚好适配你的需求。
基础实现(列表长度一致时使用)
假设你现有4个列表如下:
- 键列表:
key_list = ["你好", "谢谢", "再见"](存储通用索引词/原生词) - 取值列表1:
en_list = ["hello", "thank you", "goodbye"](英文译文) - 取值列表2:
ja_list = ["こんにちは", "ありがとう", "さようなら"](日文译文) - 取值列表3:
ko_list = ["안녕하세요", "감사합니다", "안녕히 가세요"](韩文译文)
直接通过字典推导式+多参数zip即可生成字典:
# 取值为多语言元组的版本 trans_dict = { key: (en_val, ja_val, ko_val) for key, en_val, ja_val, ko_val in zip(key_list, en_list, ja_list, ko_list) } # 取值为带语言标识字典的版本(后续查询更易用) trans_dict = { key: { "english": en_val, "japanese": ja_val, "korean": ko_val } for key, en_val, ja_val, ko_val in zip(key_list, en_list, ja_list, ko_list) }
兼容列表长度不一致的实现
如果不同列表的元素数量可能存在偏差,可使用itertools.zip_longest设置缺省值避免数据丢失:
from itertools import zip_longest trans_dict = { key: (en_val, ja_val, ko_val) for key, en_val, ja_val, ko_val in zip_longest( key_list, en_list, ja_list, ko_list, fillvalue="" # 缺失值默认填充为空字符串,可自定义 ) }
内容的提问来源于stack exchange,提问作者Lauren
相关产品推荐
相关产品推荐

