Преобразовать текстовый файл, который имеет значение больше словаря в словарь - PullRequest
0 голосов
/ 26 марта 2020

Я пытался преобразовать текстовый файл в словарь. Текстовая форма была следующей:

0 <-> a
1 <-> b
2 <-> cd
3 <-> E
5 <-> f
6 <-> G
7 <-> hij
9 <-> k

Я пытался прочитать каждую строку текстового файла, а затем поместить его в пустой словарь с определенным форматом:

Например:

{'0': {'a'}, '1': {'b'}, '2': {'c', 'd'}, '3': {'e'}, '5': {'f'}, '6': {'g'}, '7': {'h', 'i', 'j'}, '9': {'k'}}

Я пытался:

d = {}
with open('txtfile.txt') as f:
    for line in f:
        (key,val) = line.strip().split('<->')
        d[str(key).strip()] = val.strip()

return(d)

Затем я получил:

{'0': 'a', '1': 'b', '2': 'cd', '3': 'e', '5': 'f', '6': 'g', '7': 'hij', '9': 'k'}

Меня пытались разделить cd & hij на {'c', 'd'} и {'h','i','j'}, но я не смог найти способ сделать это, и хотя я использовал полосу, чтобы удалить пустое место в начале и конце каждой строки в текстовом файле, но когда я использовал для l oop, чтобы проверить В каждом ключе и значении словаря между символами было свободное место.

1 Ответ

1 голос
/ 26 марта 2020

Вы почти на месте, вам просто нужно позвонить set на val.strip(), чтобы преобразовать вашу строку, например, "ab", в набор, например, {"a", "b"}, то есть:

d = {}                                                                          
with open('txtfile.txt') as f:                                                  
    for line in f:                                                              
        key, val = line.strip().split('<->')                                   
        d[key.strip()] = set(val.strip())

print(d)

Выход:

{'0': {'a'}, '1': {'b'}, '2': {'d', 'c'}, '3': {'E'}, '5': {'f'}, '6': {'G'}, '7': {'h', 'j', 'i'}, '9': {'k'}}
...