繁体   English   中英

如何从txt文件制作字典?

[英]How to make a dictionary from a txt file?

假设以下文本文件(dict.txt)有

1    2    3
aaa  bbb  ccc

字典应该是{1: aaa, 2: bbb, 3: ccc}像这样

我做了:

d = {}
with open("dict.txt") as f:
for line in f:
    (key, val) = line.split()
    d[int(key)] = val

print (d)

但它没有用。 我认为这是因为 txt 文件的结构。

你想成为键的数据在第一行,你想成为值的所有数据都在第二行。
所以,做这样的事情:

with open(r"dict.txt") as f: data = f.readlines() # Read 'list' of all lines

keys = list(map(int, data[0].split()))            # Data from first line
values = data[1].split()                          # Data from second line

d = dict(zip(keys, values))                       # Zip them and make dictionary
print(d)                                          # {1: 'aaa', 2: 'bbb', 3: 'ccc'}

基于 OP 编辑的更新答案:

#Initialize dict
d = {}

#Read in file by newline splits & ignore blank lines
fobj = open("dict.txt","r")
lines = fobj.read().split("\n")
lines = [l for l in line if not l.strip() == ""]
fobj.close()

#Get first line (keys)
key_list = lines[0].split()

#Convert keys to integers
key_list = list(map(int,key_list))

#Get second line (values)
val_list = lines[1].split()

#Store in dict going through zipped lists
for k,v in zip(key_list,val_list):
    d[k] = v

    

首先为键和值创建单独的列表,条件如下:

    if (idx % 2) == 0:
        keys = line.split()
        values = lines[idx + 1].split()

然后结合两个列表

d = {}

# Get all lines in list
with open("dict.txt") as f:
    lines = f.readlines()

for idx, line in enumerate(lines):
    if (idx % 2) == 0:
        # Get the key list
        keys = line.split()

        # Get the value list
        values = lines[idx + 1].split()

        # Combine both the lists in dictionary
        d.update({ keys[i] : values[i] for i in range(len(keys))})
print (d)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM