我的文件类似于:
1 a
1 a
1 b
3 s
3 p
3 s
3 y
5 b
...
我正在将它变成一个字典,其中键是第0列,值是第1列。我正在使用循环,所以当我再次看到键时,我追加新值如果新值不在现有密钥中,因此我的字典看起来像:
test_dict = {'1':[1,b],'3':[s,p,y] ...}
我的代码如下:
test_dict = {}
with open('file.txt') as f:
for line in f:
column = line.split()
if column[0] not in test_dict:
test_dict[column[0]] = column[3]
elif column[3] not in test_dict[column[0]]:
test_dict[column[0]].append(column[3])
else:
break
我在追加行上得到str has no attribute append error
。我知道这些列被视为一个字符串,我怎么能在我的代码中纠正这个?
答案 0 :(得分:3)
您无法附加到字符串。您要么+=
要么要test_dict
列出要素。您也可以将dict值设为set
并删除所有重复检查,但您的列表将不再按第一次出现顺序排序。
from collections import defaultdict
test_dict = defaultdict(set)
with open('file.txt') as f:
for line in f:
columns = line.split()
test_dict[columns[0]].add(columns[3])
答案 1 :(得分:1)
column[3]
是一个字符串,test_dict[column[0]]
将是一个字符串。你的意思是把它列为一个清单吗?
test_dict[column[0]] = [column[3]]
答案 2 :(得分:0)