Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在使用while循环时将值附加到字典中的列表?_Python_List_Dictionary_While Loop_Append - Fatal编程技术网

Python 如何在使用while循环时将值附加到字典中的列表?

Python 如何在使用while循环时将值附加到字典中的列表?,python,list,dictionary,while-loop,append,Python,List,Dictionary,While Loop,Append,我的目标是当同一个键出现时,在字典中的列表中添加一个新的假期点。因此,如果在我继续循环后Joe再次出现,新的度假地点应该添加到Joe的度假地点列表中,但我会将其覆盖。我尝试使用for循环进行追加,但也没有成功。如何修复它,以便在每次循环继续时向列表中追加一个新值?您是否考虑过要用于字典的模式?从您的代码来看,似乎您正在尝试执行以下操作 假期调查={ ‘鲍勃’:[‘斐济’、‘佛罗里达’、‘日本’], ‘乔’:[‘迪斯尼乐园’、‘六面旗’、‘乐高乐园’] } 当我处理这类问题时,通常我要做的是设置

我的目标是当同一个键出现时,在字典中的列表中添加一个新的假期点。因此,如果在我继续循环后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]