簡體   English   中英

為什么我的 for 循環不計算 Python 字典中等於“在線”的正確值數?

[英]Why does my for loop doesn't count correct number of values that are equal to 'Online' in a dictionary in Python?

我正在嘗試計算狀態為在線的人數。 我討厭創建字典,還創建了一個計數變量來跟蹤在線用戶。 下面是我的代碼和錯誤日志。 在下面的代碼中,我希望計數為 2。

class Solution(object):

    def getStatus(self, status):
        count = 0

        for k, v in status.items():
            # I even tried to used json.load(status) to parse but it doesn't help

            if status[k].key() == "Online":
                count += 1
            else:
                pass
        return count


if __name__ == "__main__":
    statuses = {
        "Alice": "online",
        "Bob": "offline",
        "Eve": "online",
    }
    print(Solution().getStatus(statuses))

下面是我的錯誤日志

  if status[k].key() == "Online":
AttributeError: 'str' object has no attribute 'key'

你想檢查這個值,你可以使用變量v訪問它

您可以使用

if v == "online":

代替

  if status[k].key() == "Online":

為什么會出現錯誤?

status[k]是字典中的值的字符串,所以你不能在它上面調用 function key() 要驗證這一點,只需在循環中打印status[k]以觀察這一點。

在你的循環中, k將是 Alice、Bob 等,而v將是“在線”或“離線”。 沒有要調用的key() function。

例如:

if v == 'online':
    ....

那行得通。 請注意,評估區分大小寫,並且您的示例混合大小寫,因此需要保持一致。

話雖如此,您應該使用operator.countOf ,它更簡單:

>>> statuses = {
...         "Alice": "online",
...         "Bob": "offline",
...         "Eve": "online",
... }
>>> from operator import countOf
>>> countOf(statuses.values(), 'online')
2
>>> countOf(statuses.values(), 'offline')
1

暫無
暫無

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

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