【问题标题】:Python - Use a variable as a list namePython - 使用变量作为列表名称
【发布时间】:2012-11-10 17:42:55
【问题描述】:

我在 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


【解决方案1】:

虽然这在 Python 中完全可以实现,但并不是必须的。这里最好的解决方案是不要这样做,而是使用字典。

import sys

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

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

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

【讨论】:

  • 这正是我所需要的。非常感谢。
【解决方案2】:

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

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

myarg = sys.argv[1]

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

如果它打印0,那么你在命令行上有一个错误的参数。

【讨论】:

    【解决方案3】:

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

    print len(globals()[myarg])
    

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

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 2012-04-14
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      相关资源
      最近更新 更多