【发布时间】:2021-01-31 19:33:47
【问题描述】:
我一直在寻找一种将数组中的变量名作为字符串获取的方法。例如:
a = ['1x', '2y', '3z']
b = ['1xx', '2yy', '3zz']
c = ['1xxx', '2yyy', '3zzz']
arr = [a, b, c]
for x in arr:
print('Currently executing: ', x)
for e in x:
print('Return Value: ', e)
>>Currently executing: a
>>Return Value: 1x
>>Return Value: 2y
>>Return Value: 3z
>>Currently executing: b
>>Return Value: 1xx
>>Return Value: 2yy
>>Return Value: 3zz
>>Currently executing: c
>>Return Value: 1xxx
>>Return Value: 2yyy
>>Return Value: 3zzz
到目前为止,我的搜索一直没有成功。有关于这个问题的答案与数组之外的变量有关,但我还没有能够将它们转换为我的上下文。 (例如:How to print original variable's name in Python after it was returned from a function?)
更新
我已经以几种不同的方式尝试了 vars()[name],但都没有奏效。我认为我不了解我的上下文中的实现。能详细点吗?
print(vars()[arr])
print(vars()[x])
print(vars()[e])
全部返回:
Traceback(最近一次调用最后一次):文件 “C:/Users/wxy/Desktop/thread_test.py”,第 9 行,在 print('返回值:', vars()[arr]) TypeError: unhashable type: 'list'
【问题讨论】:
-
您需要自己跟踪这个字符串。除非有各种黑客和技巧,否则正确执行此操作的方法是使用适当的数据结构将您想要的数据组合在一起。变量是供程序员阅读和编写源代码的,它们不应被视为程序数据。这里有多种方法,您可以使用
dict将字符串映射到列表或元组列表arr = [('a', a), ('b', b), ('c', c)]。或者创建一个自定义类,具有name属性和.arr属性并将其放入列表中。 -
顺便说一句,这些不是数组,它们是列表
-
“让事情变得比他们需要的更复杂”的很好的例子。只需使用字典。从您想要的任何地方获取键和值并相应地更新字典。
标签: python python-3.x list variables