【问题标题】:Python - How to use the value of a python variable as a python list [duplicate]Python - 如何将python变量的值用作python列表[重复]
【发布时间】:2014-05-03 14:09:56
【问题描述】:

我有:

Variable1 = "list1"

list1 = ["a", "b", "c", "d"]

如何通过变量 Variable1 访问/操作 list1 项(并将所有标准列表运算符/函数应用于 list1)

有点像

token = random.choice($UnknownOperator$(Variable1))
and token would be equal either to a b c or d 

谢谢!

【问题讨论】:

  • 如果您将list1 存储在字典 中,则不会出现此问题。 Keep your data out of your variable names.
  • @MartijnPieters 我终于不再拼错你的名字了!我觉得我花太多时间在 SO........

标签: python list


【解决方案1】:

为此,您可以使用globals()

x = "list1"

list1 = ["a", "b", "c", "d"]

>>> print globals()[x]
["a", "b", "c", "d"]

你也可以这样做:

x = "list1"

list1 = ["a", "b", "c", "d"]

get_var = lambda a: globals()[a]

>>> print get_var(x)
["a", "b", "c", "d"]

>>> print random.choice(get_var(x))
c

但正如@MartijnPieters 所说,字典是一种非常更好的方法。

【讨论】:

    【解决方案2】:

    这个问题的真正答案是,你不知道。使用字典。

    lists = {'list1': ["a", "b", "c", "d"],
             'list2': ["foo", "bar", "baz"]}
    
    token = random.choice(lists[Variable1])
    

    这个问题的所有直接答案都是丑陋的 hack,使得编辑器、调试器和代码检查器等工具难以分析您的程序。

    【讨论】:

      【解决方案3】:

      正确的方法:

      import random
      
      dict_of_lists = {"list1":['a','b','c','d']}
      variable_1 = "list1"
      
      token = random.choice(dict_of_lists[variable_1])
      

      正如许多人指出的那样,使用 globals() 字典是一个坏主意,因为 Martijn Pieters 在他对您的问题的评论中给出了原因。请改用字典并按您需要访问的“变量名”作为键。

      【讨论】:

        【解决方案4】:
        In [7]: a = "foo"
        
        In [8]: b = "a"
        
        In [9]: globals()[b]
        Out[9]: 'foo'
        

        但你不应该这样做。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-13
          • 2019-05-08
          • 1970-01-01
          • 2017-12-18
          • 2016-02-03
          • 2012-02-17
          • 2020-06-21
          • 1970-01-01
          相关资源
          最近更新 更多