Python-使用变量作为列表名

Python-使用变量作为列表名,python,Python,我用python编写了这段代码 import sys list1 = ["A", "B", "C"] list2 = [1, 2, 3] myarg = sys.argv[1] print len(myarg) 我将像这样从命令行运行这个脚本 python script.py list1 所以我需要一种方法使len与列表而不是变量一起工作,我只想在var中给出列表的名称 我知道这个例子我能做到 if myarg == "list1": print len(list1) else i

我用python编写了这段代码

import sys
list1 = ["A", "B", "C"]
list2 = [1, 2, 3]

myarg = sys.argv[1]
print len(myarg)
我将像这样从命令行运行这个脚本

python script.py list1
所以我需要一种方法使len与列表而不是变量一起工作,我只想在var中给出列表的名称

我知道这个例子我能做到

if myarg == "list1":
    print len(list1)
else if myarg == "list2"
    print len(list2)

但是我的脚本中有13个列表,我需要一种方法,通过我在命令行中给出的名称来引用它们。

虽然这在Python中是完全可能的,但并不需要。最好的解决办法是不要这样做,而是用字典

import sys

lists = {
    "list1": ["A", "B", "C"],
    "list2": [1, 2, 3],
}

myarg = sys.argv[1]
print len(lists[myarg])

您注意到您的脚本中有13个列表—其中有大量类似的数据(或需要以类似方式处理的数据),这表明您需要的是数据结构,而不是平面变量。这会让你的生活变得更轻松。

你不应该这样做,但是如果你真的想/必须这样做,你可以使用
globals()


首先确保
myarg
是一个声明变量的名称:
如果globals()中的myarg:…

既然这是可能的,而且@Lattyware的答案是正确的,那么这就是可以做到的方法:

import sys
list1 = ["A", "B", "C"]
list2 = [1, 2, 3]

myarg = sys.argv[1]

print len(globals().get(myarg, []))

如果它打印
0
,那么命令行上的参数就不正确。

这正是我需要的。非常感谢。这回答了你的问题吗?
import sys
list1 = ["A", "B", "C"]
list2 = [1, 2, 3]

myarg = sys.argv[1]

print len(globals().get(myarg, []))