我可以像python中的字典引用那样对对象进行变量化吗

我可以像python中的字典引用那样对对象进行变量化吗,python,dictionary,variable-assignment,Python,Dictionary,Variable Assignment,我有一系列的字典,里面有我想在最后合并的值。组合是混乱的,所以我不能只是组合字典,我必须根据键工作,并作出一些谨慎的选择。当我创建字典时,我以item#Dict的形式创建了它们,希望做类似的事情 for value in ['8','10','11','12','13','14','15','18','19','20']: dictName='item'+value+'Dict' 但正如我很快了解到的,dictName是一个字符串,不是我字典的参考 有没有办法使用某种模式类型的方法来引

我有一系列的字典,里面有我想在最后合并的值。组合是混乱的,所以我不能只是组合字典,我必须根据键工作,并作出一些谨慎的选择。当我创建字典时,我以item#Dict的形式创建了它们,希望做类似的事情

for value in ['8','10','11','12','13','14','15','18','19','20']:
    dictName='item'+value+'Dict'
但正如我很快了解到的,dictName是一个字符串,不是我字典的参考

有没有办法使用某种模式类型的方法来引用我的字典

我确实看到了另一种选择,即在我创建字典时将所有字典添加到列表中,然后在列表中迭代-这种解决方案只有在我写这个问题时才出现。但我很想知道是否有办法实现我最初的方法

谢谢

您可以使用该函数获取包含当前本地范围内变量的字典:

>>> var0 = 7
>>> var1 = 3
>>> var2 = 4
>>> var3 = 5
>>> for i in range(4):
...    print 'var', i, 'is', locals()['var%d' % i]
... 
var 0 is 7
var 1 is 3
var 2 is 4
var 3 is 5
尽管如此,我并不建议你这么做。我建议您将变量放入字典或列表中,就像您在文章中提到的那样。

您可以使用该函数获取包含当前局部范围内变量的字典:

>>> var0 = 7
>>> var1 = 3
>>> var2 = 4
>>> var3 = 5
>>> for i in range(4):
...    print 'var', i, 'is', locals()['var%d' % i]
... 
var 0 is 7
var 1 is 3
var 2 is 4
var 3 is 5

尽管如此,我并不建议你这么做。我建议您将变量放入字典或列表中,就像您在文章中提到的那样。

如果它们是对象上的属性,您可以使用以下方法获取命名字典


在使用这种元编程时要小心,因为这可能是一个滑向混乱代码领域的斜坡。

如果命名词典是对象上的属性,则可以通过使用

在使用这种元编程时要小心,因为它可能是一个滑向混乱代码领域的斜坡。

eval()
可以做到:

>>> d = {'a':'first', 'b':'second'}
>>> d == eval('d')
True
但是要小心!这是一个滑坡。使用
eval()

内省方法
getattr
locals()
同样有风险。它们是强大的,它们让你做的事情,将采取的线条和线条的C++。但它们只能在绝对需要时使用

在您的情况下,最好的解决方案是词典词典,其他人已经回答过了。

eval()
可以做到:

>>> d = {'a':'first', 'b':'second'}
>>> d == eval('d')
True
但是要小心!这是一个滑坡。使用
eval()

内省方法
getattr
locals()
同样有风险。它们是强大的,它们让你做的事情,将采取的线条和线条的C++。但它们只能在绝对需要时使用


在您的情况下,最好的解决方案是一本字典词典,其他人已经回答过了。

您最初的方法是错误的。它甚至在Python3中都不起作用。使用你的新方法。你原来的方法是错误的。它甚至在Python3中都不起作用。使用你的新方法。像我这样的人还有其他代码吗??谢谢,这很有帮助。像我这样的人还有其他代码吗??谢谢,这很有帮助。谢谢,这很有帮助,我也很感激你花了时间谢谢,这很有帮助,我也很感激你花了时间谢谢,我忘了eval(),你是对的,我昨晚看了我的代码,觉得需要一个更好的方法。我检查了你的答案,因为它完全符合我的要求。谢谢,我忘记了eval(),你是对的-我昨晚盯着我的代码,决定需要一个更好的方法。我检查了你的答案,因为它完全符合我的要求。