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

时间:2018-02-12 20:15:30

标签: python python-3.x

说我已经定义了这些变量

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

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

1 个答案:

答案 0 :(得分:5)

对于全局变量,扫描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"}