我的函数需要在字典中找到速度最快的字符。角色名称是键,值是统计元组。速度是值元组的索引6
。如何比较之前的最高速度和当前值是否更高?一旦获得速度,我如何获取该字符的类型(值元组中的索引 1 和 2)并将它们作为列表返回?
示例数据:
d={'spongebob':(1,'sponge','aquatic',4,5,6,70,6), 'patrick':(1,'star','fish',4,5,6,100,1)}
帕特里克的速度最高(100),他的类型是star
和fish
。应该返回[星星,鱼]
这是我当前的代码,该代码不起作用,因为我不知道如何比较以前的代码和当前的代码:
def fastest_type(db):
l=[]
previous=0
new=0
make_list=[[k,v] for k,v in db.items()]
for key,value in db.items():
speed=value[6]
return l_types.sort()
最佳答案
sorted
函数可以很容易地做到这一点:
代码:
from operator import itemgetter
def fastest_type(db):
fastest = sorted(db.values(), reverse=True, key=itemgetter(6))[0]
return fastest[1], fastest[2]
此代码按键 6
进行排序,以相反的顺序,以便最大的在前面,然后将 fastest
设置为排序的第一个元素。然后它只是从最快的位置返回两个所需的字段。
测试代码:
d = {
'spongebob':(1,'sponge','aquatic',4,5,6,70,6),
'patrick':(1,'star','fish',4,5,6,100,1)
}
print(fastest_type(d))
结果:
('star', 'fish')
关于Python-如何在for循环中将新值与先前值进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43527597/