我有一个文本文件,其中的行有两列(由制表符分隔)。我想打开这个文件并输出一个字典,将第一列存储为键,然后将第二列存储为值。但我很难处理具有不同值的键(如下面的Camiguin
):
Sandingan Loon, Bohol Pangangan Calape, Bohol Limasawa Limasawa, Southern Leyte Catalat San Vicente, Palawan Camiguin Catarman, Camiguin Camiguin Guinsiliban, Camiguin Camiguin Mahinog, Camiguin Camiguin Mambajao, Camiguin Camiguin Sagay, Camiguin Rasa Narra, Palawan
我使用的代码是:
filesDir = "C:\Users\user\Desktop"
fhand = open(filesDir+"\input.txt")
fout = open(filesDir+"output.txt","w")
d = dict()
for line in fhand:
x = line.rstrip("\n")
x = x.split("\t")
if x[0] not in d:
d[x[0]] = x[1]
else:
d[x[0]] += x[1]
continue
print(d)
我得到的结果是这样的(注意Camiguin
的结果,它只是将这些值串联在一起。我可能需要使用一个列表,但我不知道如何:
{'Limasawa': 'Limasawa, Southern Leyte', 'Rasa': 'Narra, Palawan', 'Catalat': 'San Vicente, Palawan', 'Camiguin': 'Catarman, CamiguinGuinsiliban, CamiguinMahinog, CamiguinMambajao, CamiguinSagay, Camiguin', 'Pangangan': 'Calape, Bohol', 'Sandingan': 'Loon, Bohol'}
编辑:我想要的输出应该是这样的:
{'Limasawa': 'Limasawa, Southern Leyte', 'Rasa': 'Narra, Palawan', 'Catalat': 'San Vicente, Palawan', 'Camiguin': ['Catarman, Camiguin','Guinsiliban, Camiguin','Mahinog, Camiguin','Mambajao, Camiguin','Sagay, Camiguin'], 'Pangangan': 'Calape, Bohol', 'Sandingan': 'Loon, Bohol'}
在else循环下,可以检查分配给该键的值的类型。如果类型是字符串,请将其替换为包含当前字符串和新值的列表。如果该值已经是一个列表,请将新值附加到该列表中
不要使用字典,而是使用defaultdict,然后您可以随时追加
使用
dict.setdefault
例如:
输出:
相关问题 更多 >
编程相关推荐