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

计算字典中大于Python中某个数字的值?,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我希望创建一个函数,它可以打印一个等级大于或等于90的次数 因此,如果字典是: d = {'Luke':'93', 'Hannah':'83', 'Jack':'94'} 输出应该是2 尝试运行代码时出现以下错误: ValueError:基数为10的int()的文本无效:“Tom” def overNum(): d = {'Tom':'93', 'Hannah':'83', 'Jack':'94'} count = 0 for number in d:

我希望创建一个函数,它可以打印一个等级大于或等于90的次数

因此,如果字典是:

d = {'Luke':'93', 'Hannah':'83', 'Jack':'94'}
输出应该是2

尝试运行代码时出现以下错误: ValueError:基数为10的int()的文本无效:“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

对于d中的数字:
将遍历字典的键,而不是值。你可以用

for number in d.values():


如果您还需要名称。

对于d中的数字:
将遍历字典的键,而不是值。你可以用

for number in d.values():


如果您还需要名称。

您需要使用
items()


我修复的
if
语句也有一些问题

您需要使用
items()迭代dict中的键值对。


我修复的
if
语句也有一些问题

您可以收集列表中大于或等于90的项目,然后选择:

或者使用来对布尔值求和,而不构建新列表,如评论中所建议的:

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

您可以收集列表中大于或等于90的项目,然后选择:

或者使用来对布尔值求和,而不构建新列表,如评论中所建议的:

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

您可以使用
过滤器

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

您可以使用
过滤器

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

请允许我建议用
sum(int(I)>=90表示I-in-d.values())
来计数,而不是建立一个列表
v>=“90”
应该足以保存到int@pylang的转换。
“100”>“90”
会返回什么?@Selcuk我接受更正。我想到了类似于
“93”>“90”
。谢谢。请允许我建议
sum(int(I)>=90表示I in d.values())
计数,而不是建立一个列表
v>=“90”
应该足以保存到int@pylang的转换。
“100”>“90”
返回什么?@Selcuk我站出来更正。我想到了类似于
“93”>“90”
。谢谢。默认情况下,Dicts迭代键
中的code>int(number)相当于d.keys()中的
int(number)
,因此错误来自于强制转换
int(“Tom”)
。要迭代需要的值
d.values()
或两个键值对,请使用
d.items()
。默认情况下,Dicts迭代键
中的code>int(number)相当于d.keys()中的
int(number)
,因此错误来自于强制转换
int(“Tom”)
。若要迭代需要的值,请使用
d.values()
或两个键值对,或者只使用
d.items()
。或者只使用
d.values()
或只使用
d.values()