可以将字符串转换为命名变量或替代变量吗?

时间:2019-07-24 16:52:07

标签: python pandas

我有一个自动收录器,我想检查一个特定的自动收录器列表,以查看是否找到了该自动收录器。如果找到它,它将替换它。

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

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

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)

2 个答案:

答案 0 :(得分:0)

至少有两种可能性:

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

在链接中,更多地使用CPack: Create package CPackDeb: - Generating dependency list CMake Error at /usr/share/cmake-3.10/Modules/CPackDeb.cmake:709 (message): CPackDeb: dpkg-shlibdeps: 'dpkg-shlibdeps: error: cannot find library libsystemc.so.2.3 needed 将字符串作为python表达式求值: https://thepythonguru.com/python-builtin-functions/eval/

例如:

eval()

2

使用list_name = 'list_1' eval('{}.append(new_ticker)'.format(list_name)) 与其他答案相似的局部范围变量字典,但无需手动创建dict,这也需要了解所有变量名称。

locals()

答案 1 :(得分:0)

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

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

现在,您可以接受名称,并以ticker_directory = { "list_1": list_1, "list_2": list_2 } 的形式获得所需的列表。