使用用户输入命名列表

时间:2011-05-25 05:07:19

标签: python list input

我想让用户定义要在代码中使用的列表的名称,所以我一直在使用输入函数。我希望用户对输入函数的响应成为列表的名称。我尝试了以下方法:

a = input("What would you like the name of the list to be? ")
a = []

但是,这将列表命名为“a”,而不是用户对输入函数作出响应的任何字符串。如何让用户为列表命名?反正有吗?

2 个答案:

答案 0 :(得分:6)

在此处完成所需内容的正确方法是dict列表:

>>> lists = {}
>>> lists['homework'] = [40, 60, 70]
>>> lists['tests'] = [35, 99, 20]
>>> lists
{'tests': [35, 99, 20], 'homework': [40, 60, 70]}
>>> 

当您可以请求输入时,input函数(Python 2.x中的raw_input)返回一个字符串,您可以将其作为字典的键。

答案 1 :(得分:0)

直接回答您的问题是您可以使用vars()访问您的变量范围:

list_name = input("What would you like the name of the list to be?")
vars()[list_name] = []

然后,如果在提示符处输入“foo”,则会有一个名为foo的变量。


一个间接的答案是,正如其他几个用户告诉你的那样,你不想让用户选择你的变量名,你想要使用列表字典,这样你就拥有了用户的所有列表在一个地方共同创造。

在运行时选择变量名的程序是一个永远不会没有错误的程序。例如,如果用户在提示中键入“input”,您将重新定义输入函数,以便当该用户或其他用户尝试创建另一个列表时,您将获得的是错误:

>>> list_name = input("What would you like the name of the list to be?")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable