【问题标题】:Naming a new list from another list in Python从 Python 中的另一个列表命名一个新列表
【发布时间】:2011-03-11 05:16:15
【问题描述】:

这听起来像是 Python 菜鸟提出的一个奇怪问题,但事实就是如此。我有一个包含一堆(字符串)条目的列表。我想获取其中一个条目,在其末尾添加另一个字符串,然后使用该名称创建一个新数组。例如,我有

list=["foo","bar"]

我想得到一些效果

fooblah = []

我一直在尝试这样做

list[0] + "blah" = []

显然这不起作用,因为第一部分是字符串而不是变量名,但我不知道如何修复它。从我读到的其他人的问题来看,解决方案可能是使用字典代替(?),但老实说,我还不确定字典是如何工作的。

谢谢,J。

【问题讨论】:

  • 您可以将字典视为一种将事物映射到另一个事物的类型——就像真正的字典将单词映射到它们的定义一样。您仍然可以像数组一样通过[ ] 运算符访问元素,只是键不必是整数。

标签: python list


【解决方案1】:

我会使用 python dictionary 他们几乎可以使用任何东西作为索引而不是整数。如果您动态创建局部/全局变量,您的代码可能会很快变得混乱且难以阅读。

例如

l = ["foo","bar"]
d = {}
d[l[0] + "blah"] = []
d[l[0] + "blah"].append("foo")

使用字典会给您带来其他一些好处,例如,您可以循环浏览您创建的所有新列表。

for k,v in d.iteritems():
    print "{0} --> {1}".format(k,v)

【讨论】:

    【解决方案2】:

    好吧,如果你真的想这样做,那么一种方法是通过 globals()locals() 方法返回当前符号的字典:

    globals()[list[0] + 'blah'] = [  ]
    

    请注意,list 是内置类型的名称,因此将其用作变量名被认为是不好的做法。

    此外,这是一个非常不寻常的需求;你到底想完成什么?也许有更好的方法?

    【讨论】:

    • 是的,对不起,这实际上不是变量名;我只是用它作为一个例子(显然不是一个很好的例子)。基本上我有一个文件夹中所有目录的列表,每个目录都以不同的曝光命名。如果目录中有某个文件,我想将整个文件读入一个新数组,但是为了保持每个曝光分开,如果新数组可以以某种方式命名,让我知道它是哪一次曝光,那就太好了来自。有没有更好的办法?我不怀疑,但就像我说的那样,我对此很陌生。
    • @JustinS:绝对是字典的例子(参见 GWW 的回答)。曝光文件夹名称可能是关键,文件内容作为值(如果我解释正确的话)。然后你可以用字典做各种你不能用变量做的好事情,比如轻松地循环它们。
    • 是的,这就是我们要做的。感谢您和@GWW 的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2022-01-23
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多