Python 是否可以将字符串转换为命名变量或替代项?

Python 是否可以将字符串转换为命名变量或替代项?,python,pandas,Python,Pandas,我有一个自动售票机,我想查看一个特定的自动售票机列表,看看是否找到了自动售票机。如果找到它,它将替换它 新的股票代码来自另一个数据源,因此不知道要检查哪个特定的股票代码列表。为了找到该列表,我可以将列表名称作为字符串传递,但在迭代时,代码自然会将其识别为字符串,而不是要迭代的列表 有没有办法让代码/函数识别字符串实际上是要检查的特定列表?在阅读其他问题时,我知道这可能是不可能的……在这种情况下,什么是替代方案 list_1=['A','B'] list_2=['C','D'] old_tick

我有一个自动售票机,我想查看一个特定的自动售票机列表,看看是否找到了自动售票机。如果找到它,它将替换它

新的股票代码来自另一个数据源,因此不知道要检查哪个特定的股票代码列表。为了找到该列表,我可以将列表名称作为字符串传递,但在迭代时,代码自然会将其识别为字符串,而不是要迭代的列表

有没有办法让代码/函数识别字符串实际上是要检查的特定列表?在阅读其他问题时,我知道这可能是不可能的……在这种情况下,什么是替代方案

list_1=['A','B']
list_2=['C','D']

old_ticker='A'
new_ticker='E'
assigned_list='list_1'

def replace_ticker(old_ticker,new_ticker,list):
    for ticker in list:
        if new_ticker in list:
            return
        else:
            list.append(new_ticker)
            list.remove(old_ticker)

replace_ticker(old_ticker,new_ticker,assigned_list)

至少有两种可能性:

1如评论中所述,有点过分,但可能:

使用eval将字符串作为python表达式求值更多链接:

例如:

list_name = 'list_1'
eval('{}.append(new_ticker)'.format(list_name))
2秒

使用局部变量与其他答案类似的局部范围变量字典,但不需要手动创建dict,这也需要了解所有变量名称

list_name = 'list_1'
locals()[list_name].append(new_ticker)

在字典中按名称键入所需列表:

ticker_directory = {
    "list_1": list_1,
    "list_2": list_2
}
现在,您可以接受该名称并将所需列表作为ticker\u目录[assigned\u list]获取

这是我所感知到的完整程序。
@prune已经回答了这个问题,我刚刚给出了完整的解决方案

您也可以使用大锤敲开螺母。简单地说,问题是如何将字符串转换为可识别的变量以使其完整。应列出所有可能性。我不是说这是一个好的做法,但它是一种可能性,不是吗?注意一件事,不要将标识符名称指定为某个关键字,这会产生歧义。你可以看到dir_____@Prune的所有原始关键字已经给出了相同的想法。我会这样做
list_1=['A','B']
list_2=['C','D']

lists = {
    'list_1':list_1,
    'list_2':list_2
    }

old_ticker='A'
new_ticker='E'
assigned_list='list_1'

def replace_ticker(old_ticker,new_ticker,list_name):
    if old_ticker not in lists[list_name]:
            return
    else:
        lists[list_name].append(new_ticker)
        lists[list_name].remove(old_ticker)

replace_ticker(old_ticker,new_ticker,assigned_list)

print(lists[assigned_list])