当前位置: 首页 > 面试题库 >

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

赵选
2023-03-14
问题内容

我在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个列表-您有许多相似的数据(或需要以类似方式处理的数据),这是您想要数据结构而不是平面变量的标志。这将使您的生活更加轻松。



 类似资料:
  • 问题内容: 我有一个分配了字符串的变量,我想根据该字符串定义一个新变量。 问题答案: 你可以使用exec:

  • 问题内容: 我正在尝试执行此查询: 这将产生以下错误: Msg 1087,第16级,状态1,第5行 必须声明表变量“ @tablename”。 动态填充表名的正确方法是什么? 问题答案: 对于静态查询(如您的问题中的查询),表名和列名必须是静态的。 对于动态查询,应动态生成完整的SQL,并使用sp_executesql执行它。 这是一个脚本示例,用于比较不同数据库的相同表之间的数据: 静态查询:

  • 问题内容: 我正在尝试将表名传递到我的mysql存储过程中,以使用此sproc从其他表中进行选择,但是它不起作用… 这是我正在尝试的: 我也尝试过不带@符号,它只是告诉我TableName不存在…我知道:) 问题答案: 它取决于DBMS,但是这种表示法通常需要Dynamic SQL,并且会遇到一个问题,即函数执行时的返回值取决于输入。这给系统带来了麻烦。作为一般规则(因此可能会有例外),DBMS不

  • 问题内容: 我想使用变量的值来访问对象。 假设我有一个名为myobject的对象。 我想用此名称填充变量,然后使用该变量访问对象。 例: 问题答案: 全球: 全球:v2 本地:v1 本地:v2

  • 当我尝试这个代码时,我不能给对象中的“option\u code”一个常量。 我想要这样的结果(选项代码需要更改)= 这可能吗?

  • 问题内容: 给出清单 您可以使用诸如 但是,我想基于代码中其他位置设置的变量来执行此操作。我可以很容易地做到这一点 但是,我该如何为另一个做呢?我尝试用列表建立索引: 但这是行不通的。我也尝试过使用字符串: 但这也不起作用。 这可能吗? 问题答案: 那是为了: 与使用相同。