Python中如何将列表名称字符串列表转换为对应列表的列表?
解决Python中字符串变量名转实际列表的问题
嘿,我懂你遇到的问题了!你已经定义了几个实实在在的列表,但l_all里存的是它们的名字字符串,想把这些字符串转换成对应的真实列表组成的新列表对吧?咱们来一步步解决这个问题~
方法1:利用全局/局部变量字典(最直接)
因为你的l_1、l_2、l_3都是当前作用域里的变量,Python提供了globals()和locals()函数来获取当前命名空间的变量字典——键是变量名字符串,值就是对应的变量内容。我们可以直接遍历l_all,从字典里取出对应的列表:
l_1 = ['a','b','c'] l_2 = ['e','f','g'] l_3 = ['g','h','i'] l_all = ['l_1','l_2','l_3'] # 使用globals()获取全局变量(如果列表在函数内定义,换成locals()) result = [globals()[name] for name in l_all] print(result) # 输出:[['a','b','c'],['e','f','g'],['g','h','i']]
方法2:提前用字典管理列表(更规范推荐)
其实如果一开始就规划好,把这些列表放到一个专门的字典里,会比直接依赖全局变量更清晰,也更易维护,尤其当变量数量变多的时候:
# 先把所有列表存入字典,键是对应的名字字符串 list_collection = { 'l_1': ['a','b','c'], 'l_2': ['e','f','g'], 'l_3': ['g','h','i'] } l_all = ['l_1','l_2','l_3'] # 直接从字典中取值即可 result = [list_collection[name] for name in l_all] print(result)
这种方法可读性更高,也避免了不小心修改全局变量的风险,是更推荐的写法哦。
为什么ast.literal_eval会报错?
你之前尝试的ast.literal_eval是用来解析字符串形式的字面量的,比如它能把"['a','b','c']"这样的字符串转换成列表,但你现在的l_all里是'l_1'——这是变量的名字,不是列表的字面量内容,所以它自然无法识别,就会抛出错误啦~
内容的提问来源于stack exchange,提问作者kingslucifer
相关产品推荐
相关产品推荐

