计算字典中大于Python中某个数字的值?

时间:2019-06-12 02:31:04

标签: python python-3.x dictionary

我正在寻求创建一个函数,该函数可以打印发现分数大于或等于90的次数。

因此,如果字典是:

d = {'Luke':'93', 'Hannah':'83', 'Jack':'94'}

输出应为2

尝试运行代码时出现以下错误:     ValueError:int()的无效文字,基数为10:“ Tom”

def overNum():
    d = {'Tom':'93', 'Hannah':'83', 'Jack':'94'}
    count = 0


    for number in d:
        if int(number) in d and int(number) >= 90 in d:
            count += 1

            print(count)

如果用户输入:numTimes(),则输出应为:

2

4 个答案:

答案 0 :(得分:4)

for number in d:将遍历字典的键而不是值。您可以使用

for number in d.values():

for name, number in d.items():

如果您还需要名称。

答案 1 :(得分:2)

您可以在列表中收集大于或等于90的项目,然后使用len()

>>> d = {'Luke':'93', 'Hannah':'83', 'Jack':'94'}
>>> len([v for v in d.values() if int(v) >= 90])
2

或者使用sum()对布尔值求和而不建立新列表,如@Primusa在评论中所建议:

>>> d = {'Luke':'93', 'Hannah':'83', 'Jack':'94'}
>>> sum(int(i) >= 90 for i in d.values())
2

答案 2 :(得分:0)

您需要使用items()遍历字典中的键值对

def overNum():
    d = {'Tom':'93', 'Hannah':'83', 'Jack':'94'}
    count = 0

    for name, number in d.items():
        if int(number) >= 90:
            count += 1
    print(count)

我修复的if语句也存在一些问题。

答案 3 :(得分:0)

您可以使用filter

len(list(filter(lambda x: int(x[1]) > 90, d.items())))