找到真实的字典元素

时间:2017-12-11 23:17:37

标签: python python-2.7

我找到了办法,但它不是很干净

ema=True
hma=False
settings={'ema': ema, 'hma': hma}

for i in settings.items(): 
    if i[1]==True: 
        print i[0]

有更多的pythonic方法吗?

2 个答案:

答案 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']