【问题标题】:Python, string (consisting of variable and strings, concatenated) used as new variable name?Python,字符串(由变量和字符串组成,连接)用作新变量名?
【发布时间】:2010-08-25 02:08:57
【问题描述】:

我一直在搜索这个,但是对于如何具体做我想做的事情有点短。我想连接一个字符串(我想在这种情况下它会是一个字符串,因为它有一个变量和字符串),如下所示,我需要使用一个由字符串组成的变量来调用一个具有索引的列表名(来自另一个变量)。我在下面简化了我的代码,只显示了它的相关部分替换值的宏:

toreplacetype = 'type'
toreplace_indx = 5
replacement_string = 'list'+toreplacetype[toreplace_indx]

所以...我试图使最后一行的字符串等于实际的变量名:

replacement_string = listtype[5]

感谢任何有关如何执行此操作的建议

编辑:

为了进一步解释,这是一个宏,它是一种模板系统,我在 python 脚本中指示我想用特定值替换的东西,所以我使用正则表达式来执行此操作。因此,当我匹配某些内容时,我希望能够从列表中的特定值替换它,但是,例如,在模板中我有 {{type}},所以我提取了这个,但是我需要操作如上所述,以便我可以使用提取的值“type”从列表中调用特定值(例如从名为“listtype”的列表中)(有多个列表,所以我需要找到一个名为“ listtype" 所以我只想根据我使用正则表达式提取的值来连接上面的内容来得到这个

【问题讨论】:

  • 我正在尝试确定以下 ignacio 的方法,这是否正确: vars = {'list':'list'+toreplacetype}; replacement_string = vars['list'][5] ?

标签: python variables concatenation


【解决方案1】:

不建议这样做。请改用字典。

vars['list%s' % toreplacetype][5] = ...

【讨论】:

  • 您能否详细说明一下,我不确定如何使用它来调用列表,例如名为“listtype”的列表(带有 index5)
  • vars = {} ; vars['listtype'] = []
  • 我想我只是没有关注这与我的问题的关系,不过我非常感谢您在这方面的帮助
  • Rick,我认为 Ignacio 的意思是您可以使用实际列表的值创建一个字典键 listtype。这将意味着不那么晦涩的解决方法。
  • 现在我玩得更多了,我明白了 Ignacio 的意思,这似乎是最简单的方法,这只是重新思考我在使用字典方面尝试做的事情以这种方式.. 感谢您为我指出正确的方向 ignacio,然后 tim 澄清了它,以便我可以采取行动
【解决方案2】:

嗯……

globals()['list%s'% toreplacetype][toreplace_indx]

【讨论】:

  • 好吧,对我来说,这些类型的东西似乎不断回到 globals() 或 locals() 所以我想在 python 中这是做这类事情的方法,我将在然后更深入地了解它的来龙去脉
  • globals 只返回全局范围内的对象字典。我推荐使用 Ignacio 的方法,因为它避免了全局命名空间..
【解决方案3】:
replacement_string = 'list'+toreplacetype+'['+str(toreplace_indx)+']'

当你打印它时将产生 listtype[5]。

你需要将它分成 5 个部分:1 个字符串变量、3 个字符串和一个转换为字符串的 int。

我想这就是你要问的?

【讨论】:

  • 我想我应该更多地提到这个..(我将在上面进行编辑以解释更多)..我想要这个:'list'+toreplacetype[toreplace_indx] 等于 listtype[ 的变量名5]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多