我想从带有函数和for循环的字典中获取最大值和相应的键。这是我的密码:
Autolager = {'Audi' : 9, 'BMW' : 11, 'Mercedes' : 8}
def Maxlagerbestand(Autolager):
MaxAutoValue = 0
MaxAutoName = None
for i in Autolager:
if Autolager[i] > MaxAutoValue:
MaxAutoValue = Autolager[i]
MaxAutoName = [k for k, v in Autolager.items() if v == MaxAutoValue]
return (MaxAutoValue, MaxAutoName)
print (Maxlagerbestand(Autolager))
输出是(9,['Audi']),但应该是(11,['BMW])
我甚至在没有功能的情况下检查了它:
MaxAutoValue = 0
for i in Autolager:
if Autolager[i] > MaxAutoValue:
MaxAutoValue = Autolager[i]
print (MaxAutoValue)
这里的输出正确地用11表示。你知道吗
我上面的代码出了什么问题?我很感激你给我的任何暗示。你知道吗
虽然马克的答案可行,但你可以简化代码
将
return (MaxAutoValue, MaxAutoName)
放入for循环中,而不是在for循环完成之后。你知道吗我也不知道你想用
[k for k, v in Autolager.items() if v == MaxAutoValue]
做什么。用i
或[i]
代替它不是更容易吗?你知道吗经典的方法是:在
for
循环结束时立即返回。这意味着在第一次迭代后返回最大值。因此,它尚未评估所有元素。你知道吗也就是说,通过使用
max(..)
,这可以得到很大的改善:这将产生一个包含键值组合和最大值的2元组,因此:
如果要获取具有此值的所有键,我们可以再次运行字典:
然后返回:
对于一个空字典(
{}
),上面会出错。我们可以将default=
值添加到max(..)
以返回给定字典为空的值:对于空字典,则返回:
相关问题 更多 >
编程相关推荐