[英]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
等於1
而False
等於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.