如何从文件加载字典并还原为原始嵌套列表与数字列表?
解决方案
1. 从文件加载不含分号的字典
要将文件中带分号的文本转换为无分号的Python字典,核心是把字符串形式的列表还原为实际的列表对象,这里用ast.literal_eval(比eval更安全)实现:
import ast loaded_dict = {} with open("myfile.txt", 'r') as f: for line in f: # 移除换行符并按分号分割内容 cleaned_line = line.strip() parts = cleaned_line.split(';') # 提取键值对:文件第一部分是原test_values元素,第二部分是原test_keys的列表字符串 value_str = parts[0] key_list_str = parts[1] # 将字符串列表转为真实Python列表 key_list = ast.literal_eval(key_list_str) loaded_dict[value_str] = key_list
执行后得到的loaded_dict结构如下:
{'123': ['tobbe', 'kalle'], '234': ['karl', 'Clara'], '345': ['finis'], '456': ['tank']}
2. 还原为原始列表
Python 3.7及以上版本的字典会保留插入顺序,直接提取字典的键和值即可还原原始列表:
# 还原test_values列表(对应字典的键) test_values_loaded = list(loaded_dict.keys()) # 还原test_keys列表(对应字典的值) test_keys_loaded = list(loaded_dict.values()) # 验证结果 print("还原后的test_values:", test_values_loaded) print("还原后的test_keys:", test_keys_loaded)
输出结果:
还原后的test_values: ['123', '234', '345', '456'] 还原后的test_keys: [['tobbe', 'kalle'], ['karl', 'Clara'], ['finis'], ['tank']]
内容的提问来源于stack exchange,提问作者TobbeTrollkarl
相关产品推荐
相关产品推荐

