我不是要计算字典中值的数量
这是我的代码:
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?
答案 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语句逻辑没有意义。