Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中将文本文件转换为字典_Python_Dictionary - Fatal编程技术网

如何在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:])我想知道有没有什么方法可以不用导入物品就可以做到这一点,因为我还没有在课堂上学到这一点。谢谢你的帮助!