获取python中对象对应的所有可能变量名的列表

获取python中对象对应的所有可能变量名的列表,python,python-3.x,Python,Python 3.x,假设我定义了这些变量 a=1 b="2" c=2 d=2 e="2" 我需要一种方法来获取可以与我指定的对象配对的所有变量名。例如,如果我指定“2”,它应该返回[“b”,“e”],因为这是两个值为“2”的变量。如果我指定整数2,它应该给我[“c”,“d”]。有办法做到这一点吗?我也在寻找一个python式的答案。对于全局变量,请扫描globals()字典,并使用您要查找的值提取变量: a=1 b="2" c=2 d=2 e="2" print([k for k,v in globals().

假设我定义了这些变量

a=1
b="2"
c=2
d=2
e="2"

我需要一种方法来获取可以与我指定的对象配对的所有变量名。例如,如果我指定“2”,它应该返回[“b”,“e”],因为这是两个值为“2”的变量。如果我指定整数2,它应该给我[“c”,“d”]。有办法做到这一点吗?我也在寻找一个python式的答案。

对于全局变量,请扫描
globals()
字典,并使用您要查找的值提取变量:

a=1
b="2"
c=2
d=2
e="2"

print([k for k,v in globals().items() if v=="2"])
结果:

['e', 'b']
使用
locals()
的局部变量也是如此。要测试局部变量和全局变量,请链接两个dict项并使用
set
,因为值会根据范围重复:

{k for k,v in itertools.chain(locals().items(),globals().items()) if v=="2"}

对于全局变量,请扫描
globals()

a=1
b="2"
c=2
d=2
e="2"

print([k for k,v in globals().items() if v=="2"])
结果:

['e', 'b']
使用
locals()
的局部变量也是如此。要测试局部变量和全局变量,请链接两个dict项并使用
set
,因为值会根据范围重复:

{k for k,v in itertools.chain(locals().items(),globals().items()) if v=="2"}

你有什么理由不能用口授吗?(
myobjects['a']=1
myobjects['b']=“2”
,等等)这将更容易使用。没有pythonic方法可以做到这一点,您必须检查所有可能名称空间中所有可能的名称:对象对,以获得一般答案。如果可以检索到名称空间,例如
globals
,则只需检查该名称空间即可。一般来说,除非您正在构建调试器或soemthing@juanpa.arrivillaga你标记的副本几乎与我的问题无关asked@Qwerty当然了,它是关于从一个对象中以字符串形式检索变量名。@juanpa.arrivillaga它不是重复的,因为这个问题没有我问题的答案你不能使用dict的原因是什么?(
myobjects['a']=1
myobjects['b']=“2”
,等等)这将更容易使用。没有pythonic方法可以做到这一点,您必须检查所有可能名称空间中所有可能的名称:对象对,以获得一般答案。如果可以检索到名称空间,例如
globals
,则只需检查该名称空间即可。一般来说,除非您正在构建调试器或soemthing@juanpa.arrivillaga你标记的副本几乎与我的问题无关asked@Qwerty当然了,它是关于从一个对象中以字符串形式检索变量名。@juanpa.arrivillaga它不是重复的,因为这个问题没有我问题的答案谢谢!这正是我想要的。谢谢!这正是我想要的。