计算字典中SPECIFIC / CERTAIN值的数量

时间:2018-05-05 23:16:12

标签: python dictionary count

我不是要计算字典中值的数量

这是我的代码:

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 :(得分:2)

您需要迭代字典的值。目前,您可以迭代字典中的键,而无需访问值。

请注意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,因为布尔值是int的子类。

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

res = sum(i=='green' for i in d.values())  # 1

答案 1 :(得分:1)

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()

你的if语句逻辑没有意义。