Подсчет количества ОСОБЕННЫХ / ОПРЕДЕЛЕННЫХ значений в словаре - PullRequest
0 голосов
/ 06 мая 2018

Я не пытаюсь подсчитать количество значений в словаре

Вот мой код:

def use_favcolors(fav_color):
    count = 0
    for green in fav_color:
        if green == fav_color:
            count += 1
    print count

def main():
    use_favcolors({"John": "green", "Bobby": "blue", "PapaSanta": "yellow"})
main()

Почему это печатает 0? Поскольку в словаре есть зеленый цвет, не должен ли он печатать 1?

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Вам нужно перебрать значения вашего словаря. В настоящее время вы перебираете ключи в словаре, не обращаясь к значениям.

Обратите внимание, что for i in fav_color - идиоматический способ итерации ключей в Python.

Pythonic способ перебора значений заключается в использовании dict.values:

def use_favcolors(fav_color):
    count = 0
    for color in fav_color.values():
        if color == 'green':
            count += 1
    print count

Другим способом реализации вашей логики является использование sum с выражением генератора. Это работает, потому что True == 1, поскольку Boolean является подклассом int.

d = {"John": "green", "Bobby": "blue", "PapaSanta": "yellow"}

res = sum(i=='green' for i in d.values())  # 1
0 голосов
/ 06 мая 2018
def use_favcolors(fav_color):
    count = 0
    for i in fav_color:
         if fav_color[i] == "green":
         count += 1
    print(count)

def main():
    use_favcolors({"John": "green", "Bobby": "blue", "PapaSanta": "yellow"})
main()

Ваша логика утверждения не имеет смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...