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

在python中即时生成变量名

单于浩邈
2023-03-14
问题内容

有没有一种方法可以在python循环中生成变量名并为其分配值?例如,如果我有

prices = [5, 12, 45]

我想要

price1 = 5
price2 = 12
price3 = 45

我可以在一个循环或某事做,而不是手动分配price1 = prices[0]price2 = prices[1]等等。

编辑

许多人建议我写一个要求这样做的理由。首先,有些时候我认为这可能比使用列表更方便…我不记得确切的时间,但是我想我想过在有很多嵌套级别时使用它。例如,如果具有列表列表的列表,则以上述方式定义变量可能有助于降低嵌套级别。第二,今天我在尝试学习使用Pytables时想到了这一点。我刚遇到Pytables,我发现在定义表的结构时,以下列方式描述了列名和类型:

class TableFormat(tables.IsDescription):
    firstColumnName = StringCol(16)
    secondColumnName = StringCol(16)
    thirdColumnName = StringCol(16)

如果我有100列,则显式键入每个列的名称似乎需要很多工作。因此,我想知道是否有一种动态生成这些列名称的方法。


问题答案:

如果你确实想即时创建它们,则可以将其分配给globals()或返回的dict,或者locals()取决于要在其中创建它们的名称空间:

globals()['somevar'] = 'someval'
print somevar  # prints 'someval'

但是我不建议这样做。通常,避免使用全局变量。locals()经常使用只会模糊你的实际工作。相反,创建自己的字典并分配给它。

mydict = {}
mydict['somevar'] = 'someval'
print mydict['somevar']

学习python zen;运行它并做好它:

>>> import this


 类似资料:
  • 问题内容: 如何根据当前日期返回包含过去四年的行集? 如果此查询在2010年12月31日运行,则应返回: 但是,如果它在2011年1月1日运行,则应返回: 这是我开始的工作,有两个查询返回了起始年份。我更喜欢第二种,因为转换为字符串对我来说有点脏。 但是我不知道如何生成行来充实它。在SQL Server中,我将像此页上的fn_nums函数一样使用CTE 。 问题答案: 这是一种方法: 或者: 或者

  • 我想自动为我的存储创建一个新变量。 它的工作原理应该是: 如果var_count是例如4,它应该生成一个名为var4的变量。

  • 我有一些变量的名字以数字结尾。现在我需要在一个循环中更改它们的值。 不是把所有的变量放入循环中,我想知道是否有一种方法可以在循环中生成变量的名称?也许是这样的? 我很确定我在什么地方见过类似的东西。做这件事最好的方法是什么?

  • 我四处寻找,但没有找到一个明确的例子。我想以编程方式(C#)创建一个自签名(自)信任的证书,执行以下步骤: 步骤1: 即时创建根CA证书并将其添加到“受信任的根证书颁发机构”文件夹中的证书存储中 我做到了(参见下面的代码-步骤1)。如何完成第2步?目标计算机是Windows XP/7。 我尝试了纯.NET方法和Bouncy Castle库。

  • 问题内容: 使用深度嵌套的python字典,我希望能够在这样的数据结构中分配值: 无需检查mydict [key]等实际上是否设置为dict,例如使用 附属词典的创建应即时进行。允许等效的最优雅的方法是什么-也许在标准上使用装饰器? 问题答案: class D(dict): def missing(self, key): self[key] = D() return self[key]

  • 如何在Map结构中完全禁用使用“构建器”?我根本不想使用它们,因为它们会给我带来各种各样的问题。 我在META-INF下创建了服务文件(我更喜欢一种将其分配给映射构建器=的方法,但我没有看到任何如何在代码中正确执行此操作的示例)。 它仍在尝试使用我想映射到的“ModifiableXXX”实例的不可变“构建器”实例。如果可用,我什至采取一种方法将其强制为可修改类型。 在另一个映射中,使用更新Modi