如何用具有不同值的相同键修复字典错误

问题描述 投票:0回答:3

我有一个文本文件,其中的行有两列(由制表符分隔)。我想打开此文件并输出字典,将第一列存储为键,然后将第二列存储为值。但是我很难处理具有不同值的键(例如下面的Camiguin):

薄荷岛三丁岸龙薄荷岛Pangangan Calape利马萨利马萨,南莱特巴拉望卡塔拉特圣维森特酒店卡米金·卡塔曼(Camiguin Catarman)甘米银Guinsiliban,甘米银卡米金(Camiguin Mahinog)甘米银甘米银Camiguin Sagay,卡米金巴拉望Rasa Narra

我使用的代码是:

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

我有一个文本文件,其中的行有两列(由制表符分隔)。我想打开此文件并输出字典,将第一列存储为键,然后将第二列存储为值。但是我是...

python python-2.7 loops dictionary
3个回答
2
投票

代替使用字典,使用defaultdict,然后您可以随时添加


2
投票

使用dict.setdefault


0
投票

在您的else循环下,您可以检查分配给该键的值的类型。如果类型是字符串,则将其替换为包含当前字符串和新值的列表。如果该值已经是列表,则将新值附加到该列表。

© www.soinside.com 2019 - 2024. All rights reserved.