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])