【问题标题】:Assign values to variables names of a list [duplicate]为列表的变量名称赋值[重复]
【发布时间】:2021-07-05 23:18:13
【问题描述】:

成像我有这两个列表:

 varnames=['a','b','c']
 values = [1,2,3]

我想将第二个列表的值分配给第一个列表的变量。 IE。变量的名称是第一个列表的字符串。

预期结果:

 a=1
 b=2
 c=3

这可能吗? 是这样的吗?

谢谢。

编辑 1:这里有一个链接 How do I create variable variables? 指向一篇关于 php 的文章。也就是说,这不是重复

【问题讨论】:

  • 您可以使用execeval 对字符串进行编码(并且您可以轻松地根据您拥有的内容制作编码字符串),但相信我,您不想这样做。变量应该标记您的代码,以便您跟踪对象。如果您开始从任意字符串创建变量,您可能会开始遇到错误,例如意外地重新分配现有变量。将这些任意名称保存在字典中或通过setattr(基本上是字典)作为对象的属性。至少它们会与您的代码隔离开来。
  • 副本不是关于 PHP(问题的作者只是顺便提到它以澄清他的意思),而是关于 Python,正如所有答案都清楚地表明的那样 - 所以,你一定要阅读它.无论如何,正如已经建议的那样,简短的回答:不要那样做,使用字典。

标签: python variables variable-assignment


【解决方案1】:
#with one liner
dict(zip(varnames,values))
# output = {'a': 1, 'b': 2, 'c': 3}

【讨论】:

  • 不是 OP 要求的,而是正确的解决方案。
  • 标记为重复已达到另一个水平。对于一个 python 问题,我将标签复制到一个带有关于 php 的链接的问题!
  • @JFerro 骗子与 PHP 无关。提问者只是顺便提了一下。
  • 这是答案:for i,varname in varnames: exec(f'{varname} = {values[i]}')
  • @JFerro globals().update(zip(varnames, values)) — 但这都很可怕;你不应该使用也不需要变量变量......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 2016-03-27
  • 2017-07-01
  • 2013-09-13
  • 1970-01-01
  • 2019-05-08
相关资源
最近更新 更多