我正在嘗試創建一個函式來計算每次字串 'online' 在字典中作為值出現時的計數。
例如,在函式中輸入以下字典應該會產生 2,但我只得到 0。
statuses = {
"Alice": "online",
"Bob": "offline",
"Eve": "online",}
以下是我到目前為止所想出的。這個函式只回傳 0。我怎樣才能讓函式回傳正確的計數?為什么它回傳0?
def online_count(dict_a):
count = 0
for i in dict_a:
if dict_a[i] == "online":
count 1
return count
uj5u.com熱心網友回復:
您的解決方案走在正確的軌道上!如果回圈的當前索引處的值等于,"online"那么您在增加計數器方面有正確的想法,但是您實際上并未增加count,您只是添加了它,盡管該運算式實際上并未保存到變數中。
count 1
應該:
count = count 1
這樣做的原因是您可以使count等于自身(其當前計數器值)和 1 以增加計數器。
為了進一步簡化這一點,你可以只寫count = 1which 做同樣的事情。
最終代碼:
statuses = {
"Alice": "online",
"Bob": "offline",
"Eve": "online"
}
def online_count(dict_a):
count = 0
for i in dict_a:
if dict_a[i] == "online":
count = 1
return count
uj5u.com熱心網友回復:
回圈沒有增加count——它把它和 1 相加,而忽略了結果。你可以 =用來做到這一點:
count = 1
uj5u.com熱心網友回復:
您需要首先確保函式中的行正確縮進。
然后你用
count 1
這將使計數值加 1 至零。
您需要重新分配以計數
count = count 1
或者它的簡短版本
count = 1
uj5u.com熱心網友回復:
其他答案表明您的代碼中的問題是您沒有將新值分配給count。這是使用collections.Counter容器的另一種方法。
>>> from collections import Counter
>>> counts = Counter(statuses.values())
>>> counts
Counter({'online': 2, 'offline': 1})
>> counts['online']
2
uj5u.com熱心網友回復:
如果有其他值并且您想放入字典。
import collections
statuses = {
"Alice": "online",
"Bob": "offline",
"Eve": "online",
"Adam" : "1mn rest"
}
a = statuses.values()
counter= collections.Counter(a)
print(counter)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386398.html
上一篇:遍歷不包含相同鍵的字典串列
