我有不同的列表(list_
我知道我的工作流程中当前的动态名称是什么(我在下面的示例中将其命名为“category”),并且我想创建一个等于 list_
list_dynamicname = ['a','b','c']
category = 'dynamicname'
x = 'list_traits = list_' + category
print(x)
exec(x)
print(list_traits)
这是输出:
list_traits = list_dynamicname
print(list_traits)
^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'list_traits' where it is not associated with a value
另外,如果我尝试永远不应该使用的功能,这就是我得到的:
eval(x)
list_traits = list_dynamicname
^
SyntaxError: invalid syntax
我在这里做错了什么?
我看过其他帖子,但主要是关于为具有动态名称的变量分配一个值,但就我而言,我的新变量有一个静态名称(我的意思是它将始终是 list_traits),并且我尝试为其分配动态变量的值。
您可以在不使用 exec 的情况下实现相同的功能,但由于潜在的安全风险和性能问题,通常不鼓励这样做。相反,您可以使用字典将类别名称映射到相应的列表。
lists = {
'dynamicname': ['a', 'b', 'c']
}
category = 'dynamicname'
list_traits = lists[category]
print(list_traits)