Python 如何在使用while循环时将值附加到字典中的列表?
我的目标是当同一个键出现时,在字典中的列表中添加一个新的假期点。因此,如果在我继续循环后Joe再次出现,新的度假地点应该添加到Joe的度假地点列表中,但我会将其覆盖。我尝试使用for循环进行追加,但也没有成功。如何修复它,以便在每次循环继续时向列表中追加一个新值?您是否考虑过要用于字典的模式?从您的代码来看,似乎您正在尝试执行以下操作Python 如何在使用while循环时将值附加到字典中的列表?,python,list,dictionary,while-loop,append,Python,List,Dictionary,While Loop,Append,我的目标是当同一个键出现时,在字典中的列表中添加一个新的假期点。因此,如果在我继续循环后Joe再次出现,新的度假地点应该添加到Joe的度假地点列表中,但我会将其覆盖。我尝试使用for循环进行追加,但也没有成功。如何修复它,以便在每次循环继续时向列表中追加一个新值?您是否考虑过要用于字典的模式?从您的代码来看,似乎您正在尝试执行以下操作 假期调查={ ‘鲍勃’:[‘斐济’、‘佛罗里达’、‘日本’], ‘乔’:[‘迪斯尼乐园’、‘六面旗’、‘乐高乐园’] } 当我处理这类问题时,通常我要做的是设置
假期调查={
‘鲍勃’:[‘斐济’、‘佛罗里达’、‘日本’],
‘乔’:[‘迪斯尼乐园’、‘六面旗’、‘乐高乐园’]
}
当我处理这类问题时,通常我要做的是设置一个if语句来检查字典中是否还没有键,如果没有,我用一个列表来初始化它:
如果名称不在假期投票中:
假期投票[姓名]=[]
这让我不必担心这个列表是否在我的代码中已经存在,我可以做类似的事情
vacation\u poll[name]。追加(vacation\u spot)
因为在我将与name
关联的值初始化为一个列表后,我可以指望列表就在那里
在您的情况下,您可能会考虑使用SET而不是列表,因为它只强制存储唯一值。这样,如果用户输入相同的值两次,即使第二次再次插入,也只会记录一次。
您需要使用一种附加到列表的形式。但是,您不能仅使用以下选项之一:vacation_poll = {}
name_prompt = "\nWhat is your name? "
vacation_spot_prompt = "\nWhere would you like to go on vacation? "
repeat_prompt = "\nWould you like to continue? (yes/no) "
active = True
while active:
name = input(name_prompt)
vacation_spot = input(vacation_spot_prompt)
vacation_poll[name] = [vacation_spot]
repeat = input(repeat_prompt)
if repeat == 'no':
active = False
for name, spots in vacation_poll.items():
print("\nThese are " + name.title() + "'s places of interest: ")
for spot in spots:
print("\t" + spot.title())
print(vacation_poll)
这样做将抛出一个错误,因为当一个人的第一个度假地点被添加时,字典中没有在他们的名字处建立索引的值。相反,需要get(index,default)
方法
vacation_poll[name]+=[vacation_spot]
vacation_poll[name].append(vacation_spot)
这将根据需要进行调整。当键还没有在字典中时,
get()
将返回第二个参数,默认值,在本例中是一个空列表。我只是尝试了一下,因为这是我想做的事情,但我得到了一个错误:“TabError:缩进中制表符和空格的使用不一致”vacation\u poll={}active=True而活动:name=input(name\u prompt)vacation\u spot=input(vacation\u spot\u prompt)如果name不在vacation\u poll中:vacation\u poll[name]=[]vacation\u poll[name]。append(vacation\u spot)repeat=input(repeat\u prompt)if repeat='no”:active=False可能我把它放错了?我不得不删掉一些代码来回复您。Python希望所有缩进都可以用制表符或空格(通常是4个空格)来完成。如果一些缩进是用制表符完成的,而另一些缩进是用空格完成的(比如从堆栈溢出复制的代码),那么python会感到困惑。如果您正在使用记事本++或visual studio代码之类的编辑器,它们通常会有一个菜单项,将所有缩进转换为仅制表符或仅空格。
vacation_poll[name]=vacation_poll.get(name, [])+[vacation_spot]