我找到了办法,但它不是很干净
ema=True
hma=False
settings={'ema': ema, 'hma': hma}
for i in settings.items():
if i[1]==True:
print i[0]
有更多的pythonic方法吗?
答案 0 :(得分:1)
您有2个选项。为了使其能够面向未来(py3),您可以使用()包装print语句。
ema = True
hma = False
settings = {'ema':ema, 'hma':hma}
选项1,循环
for k,v in settings.items(): # a dict returns tuples (key and value)
if v: # if only boolean values you can remove == True
print k # print key
选项2,str.join()
s = '\n'.join(k for k,v in settings.items() if v) # generator expression
if s: # if-statement to handle empty result
print s # print string
答案 1 :(得分:0)
您也可以使用filter
功能执行此操作:
ema=True
hma=False
settings={'ema': ema, 'hma': hma}
res = list(filter(lambda i: settings[i]==True, settings.keys()))
print res
输出:
['ema']