我想让用户定义要在代码中使用的列表的名称,所以我一直在使用输入函数。我希望用户对输入函数的响应成为列表的名称。我尝试了以下方法:
a = input("What would you like the name of the list to be? ")
a = []
但是,这将列表命名为“a”,而不是用户对输入函数作出响应的任何字符串。如何让用户为列表命名?反正有吗?
答案 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