每次引入新密钥时,如何为列表创建新变量?

时间:2017-02-12 03:13:53

标签: python python-3.x

我正在尝试编写一个代码,询问不同的用户他们的梦想度假目的地。它是一个字典,其中键是民意调查者的名字,值是一个名为“梦想”的列表。我想在创建新密钥时创建一个新变量。最好的方法是什么?

vacation_poll = { }

dream_vacations = [ ]

while True:

    name = input('What is your name?: ')
    while True:
        dream_vacation = input('Where would you like to visit?: ')

        repeat = input('Is there anywhere else you like to visit? (Yes/No): ')
        dream_vacations.append(dream_vacation)

        if repeat.lower() == 'no':
            vacation_poll[name] = dream_vacations
            break

    new_user_prompt = input('Is there anyone else who would like to take the poll? (Yes/No): ')

    if new_user_prompt.lower() == 'no':
         break

我当前的代码不起作用,因为创建的每个密钥都具有相同的值。

2 个答案:

答案 0 :(得分:1)

尝试更改

vacation_poll = { }
dream_vacations = [ ]
while True:

vacation_poll = { }
while True:
    dream_vacations = [ ]

他们都有相同的梦想假期的原因是因为当你分配dream_vacations时,你引用的是相同的列表。如果你dream_vacations = [ ]在一个新人的开头,dream_vacations将指向一个不相关的列表,所以没有奇怪的重复

答案 1 :(得分:1)

您不需要创建新变量(我可以想到无情况,您可以动态地想要这样做)。相反,每次只需清空dream_vacations,即:

new_user_prompt = input('Is there anyone else who would like to take the poll? (Yes/No): ')

dream_vacations = []

if new_user_prompt.lower() == 'no':
     break

这会将其设置为空白列表,因此它现在为空并且适用于下一个用户。