将具有大于值的文本文件转换为字典

2020-03-26 python dictionary

我试图将文本文件转换为字典。文本形式如下:

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'}

我试图将cdhij拆分为{'c', 'd'}{'h','i','j'} ,但是我找不到解决方法,即使我用来在文本文件的每一行的开头和结尾处删除空格,但是当我使用循环来检出每个键和字典的值时,每个字符之间都有一些空格。

Answers

val.strip() ,您只需要在val.strip()上调用set即可将您的字符串(例如"ab" val.strip()转换为一个集合,例如{"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'}}

Related