计算字典中大于Python中某个数字的值?
我希望创建一个函数,它可以打印一个等级大于或等于90的次数 因此,如果字典是:计算字典中大于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:
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()