【问题标题】:how to transform a string in a variable name ? python [duplicate]如何转换变量名中的字符串?蟒蛇[重复]
【发布时间】:2018-02-19 08:09:44
【问题描述】:

如何转换变量名中的字符串? 我有多个变量 value1、value2、value3 和 value1 = 5 当我使用

x = 1 print(str("value" + str(x)))

它返回“value1”而不是“5”

编辑:它不是重复的,因为我问的是如何解决我的问题,而不是使用 eval 是好是坏(这是你提到我的链接)

所以当我使用 eval 更改变量的值时它不起作用(“无法分配给函数调用”),

global('newValue' + str(z)) eval('newValue' + str(z)) = y + value

如果你不推荐使用 eval 你应该改用什么?因为我有很多 'if value1

【问题讨论】:

  • 我建议你使用字典。我相信这对您的情况会更好,更舒适。无论如何,您可以尝试类似exec("print(value" + str(x) + ")") 的方法,但这是一种糟糕的做法。

标签: python string variables variable-names


【解决方案1】:
print(eval(str(“value” + str(x))))

不得使用eval,即使您知道它是完全安全的。总会有更好的方法。

【讨论】:

  • 即便如此,您仍然不应该使用eval - 有更好的解决方案。
  • 比如? @brunodesthuilliers
  • 将这些值存储在listdict
  • @l.b.dev 在这种情况下使用字典或列表或对象,getattr 是规范的解决方案 - “动态”变量无论如何都是一个糟糕的主意。
  • @l.b.dev 如果您的代码如此混乱,那么显然您没有适合手头任务的数据结构。只是一个提示:python 函数也是对象,所以你可以很容易地将索引映射到函数(这只是一个列表或元组),以及zip 值和函数。实际上,我们在这里有一个完美的 XY 问题案例 - 您询问您认为解决方案是什么,而不是询问您的 real 问题(您试图用这个“解决方案”解决的问题)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 2019-05-21
  • 2013-10-07
  • 1970-01-01
  • 2014-07-25
相关资源
最近更新 更多