Python - 使用变量作为列表名称

时间:2012-11-10 17:42:56

标签: 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 if myarg == "list2"
    print len(list2)

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

3 个答案:

答案 0 :(得分:8)

虽然这在Python中是完全可能的,但它不是必需的。这里最好的解决方案是不要这样做,而是改用字典。

import sys

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

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

您注意到您的脚本中有13个列表 - 您有许多类似的数据(或需要以类似方式处理的数据),这是您想要数据结构的标志,而不是平面变量。它会让你的生活更轻松。

答案 1 :(得分:2)

既然有可能,并认为@ Lattyware的答案是正确答案,那么可以这样做:

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

myarg = sys.argv[1]

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

如果打印0,则命令行上的参数不正确。

答案 2 :(得分:1)

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

print len(globals()[myarg])

首先确保myarg是声明变量的名称:if myarg in globals(): ...