簡體   English   中英

字典的python理解循環

[英]python comprehension loop for dictionary

初學者問題。

我有一本字典:

tadas = {'tadas':{'one':True,'two':2}, 'john':{'one':True,'two':True}}

我想計算密鑰為'one'的真值。 我應該如何修改我的代碼?

sum(x == True for y in tadas.values() for x in y.values() )

只訪問一個屬性:

sum(item['one'] for item in tadas.values())

這利用了一個事實,即True等於1False等於0

如果不是每個項都包含鍵'one' ,則應使用.get方法:

sum(item.get('one', 0) for item in tadas.values())

如果dict不包含第一個參數,則.get返回第二個參數。

如果'one'也可以指向數字,那么你應該明確地測試是否is True

sum(item.get('one', 0) is True for item in tadas.values())

如果你不想在布爾值中隱藏求和,你可以用以下方法更明確地做到:

sum(1 if item.get('one', False) is True else 0 for item in tadas.values())

列表可以計算值的出現次數,因此使用它可能是最慣用的:

[x.get('one') for x in tadas.values()].count(True)

嘗試這個:

print(sum(1 for x in tadas.values() if x['one']))

注意:請不要使用這個答案,因為它肯定不如其他答案好。

您可以使用過濾器來過濾“one”未映射到True的任何值的列表。 然后,只返回列表的長度。

len(filter(lambda x: tadas[x]['one'], tadas))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM