说我已经定义了这些变量
a=1
b="2"
c=2
d=2
e="2"
我需要一种方法来获取可以与我指定的对象配对的所有变量名称。例如,如果我指定“2”,它应返回[“b”,“e”],因为它们是值为“2”的两个变量。如果我指定整数2,它应该给我[“c”,“d”]。有没有办法做到这一点?我也在寻找一个pythonic的答案。
答案 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"}