2014-05-23 44 views
1

我創建詞典列表如下:字典列表中是否存在真值?

list = [] 

for i in xrange(4): 
    list.append({}) 
    list[i]['a'] = False 

現在過了一段時間,我想(使用一個單一的代碼行)看看是否有任何的「a」值是真實的。

我曾嘗試:

anyTrue = True in list    # always returns false 
anyTrue = True in list[:]['a'] 

是否有這樣做的這樣一種方便的方法?

謝謝!

回答

2

使用anygenerator expression

>>> lst = [] 
>>> 
>>> for i in xrange(4): 
...  lst.append({}) 
...  lst[i]['a'] = False 
... 
>>> any(d['a'] for d in lst) 
False 

>>> lst[1]['a'] = True 
>>> any(d['a'] for d in lst) 
True 

BTW,不要使用list作爲變量名。它陰影內置函數/類型list

+1

我認爲這應該是d''a']'而不是d'中的'a'。 – jonrsharpe

+0

@jonrsharpe,謝謝你指出。我在閱讀您的評論後更新了答案。 – falsetru

+0

哇,這是一個非常快速的答案。隨着jonrsharpe的更正,它工作正常,所以謝謝你們兩位。一旦這個頁面讓我接受我的答案。 –

1

您可以使用anygenerator expression

if any(x['a'] for x in list): 
    # Do stuff 

請參見下面的演示:

>>> lst = [] 
>>> for i in xrange(4): 
...  lst.append({}) 
...  lst[i]['a'] = False 
... 
>>> any(x['a'] for x in lst) 
False 
>>> lst[2]['a'] = True # Set an 'a' value to True 
>>> any(x['a'] for x in lst) 
True 
>>> 

此外,你應該從命名變量list避免。這樣做會掩蓋內置。

+0

感謝您的回答!將來我不會列出任何「列表」。 –

相關問題