将具有静态名称的变量分配给另一个具有动态名称的变量的值

问题描述 投票:0回答:1

我有不同的列表(list_、list_等),因此 在这种情况下是一个动态名称。

我知道我的工作流程中当前的动态名称是什么(我在下面的示例中将其命名为“category”),并且我想创建一个等于 list_ 的新变量“list_traits”。下面是一个最小的例子。

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),并且我尝试为其分配动态变量的值。

python-3.x list
1个回答
0
投票

您可以在不使用 exec 的情况下实现相同的功能,但由于潜在的安全风险和性能问题,通常不鼓励这样做。相反,您可以使用字典将类别名称映射到相应的列表。

lists = {
    'dynamicname': ['a', 'b', 'c']
}

category = 'dynamicname'
list_traits = lists[category]

print(list_traits)
© www.soinside.com 2019 - 2024. All rights reserved.