使用用户输入命名列表

2 投票
2 回答
3818 浏览
提问于 2025-04-16 18:17

我想让用户自己定义一个列表的名字,然后在代码中使用这个名字,所以我一直在用输入函数。我希望用户在输入函数中的回答能成为列表的名字。我试过以下代码:

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

但是,这样做的结果是列表的名字变成了“a”,而不是用户输入的那个字符串。我该怎么做才能让用户给列表命名呢?有没有什么办法可以实现这个?

2 个回答

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
6

要实现你想要的功能,正确的方法是使用一个包含列表的字典:

>>> 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)会返回一个字符串,你可以把这个字符串当作字典的键。

撰写回答