如何在python中将文本文件转换为字典
我有一个文本文件,想知道如何在字典中生成值。现在我有这个如何在python中将文本文件转换为字典,python,dictionary,Python,Dictionary,我有一个文本文件,想知道如何在字典中生成值。现在我有这个 def load_map(map_file_name): my_map = open(map_file_name, 'r') my_line = my_map.readlines() dict = {} for lines in my_line: my_line = lines.split() dict[int(my_line[0])] = ','.join(my_line[1:]) li
def load_map(map_file_name):
my_map = open(map_file_name, 'r')
my_line = my_map.readlines()
dict = {}
for lines in my_line:
my_line = lines.split()
dict[int(my_line[0])] = ','.join(my_line[1:])
lines.strip('\n')
lines.split(',')
print(lines)
我的文本文件是
The Dorms
McDonald's, 50
Burger King, 100
Starbucks, 120
McDonald's
Starbucks, 50
Taco Bell, 60
我需要它的格式:
{'The Dorms': {'McDonalds': ' 50', 'Burger King': ' 100',
'Starbucks': ' 120'},
'McDonalds': {'Starbucks': ' 50', 'Taco Bell': ' 60'}
如果模式保持不变,则以单词开头的行是外部字典的键,以空格开头的行是内部字典的键、值对。使用defaultdict将避免您必须测试外部字典中是否存在密钥
from collections import defaultdict
import re
vals = defaultdict(dict)
with open(map_file_name, 'r') as f:
# if the line starts with a character, it is a dict key
# if it does not, then it is part of the value
dict_key = None
for line in f:
if re.match(r'\w', line):
dict_key = line.strip()
else:
# split Starbucks, 50 on ', '
inner_key, inner_value = line.split(', ')
vals[dict_key][inner_key.strip()] = inner_value.strip()
>>>vals
defaultdict(dict,
{'The Dorms': {"McDonald's": '50',
'Burger King': '100',
'Starbucks': '120'},
"McDonald's": {'Starbucks': '50', 'Taco Bell': '60'}})
与其将其作为普通文本保存,不如在此文件中创建字典并导入它。或者使用一些更有用的格式的文件,比如JSON或.ini或YAML。在当前版本中,您必须识别、跳过或创建嵌套字典,如
宿舍
,因此您的代码必须更加复杂。当前代码有什么问题,您的问题是什么?这些数据来自哪里?当前代码当前没有运行,我不知道如何使用给定的文本文件创建嵌套列表。我正在学习cs入门课程,对此感到困惑。当前代码当前没有运行。你能更具体一点吗?是的,因此代码没有运行。我得到一个错误,行dict[int(my_line[0])]=','。join(my_line[1:])我想知道有没有什么方法可以不用导入物品就可以做到这一点,因为我还没有在课堂上学到这一点。谢谢你的帮助!