我的功能需要在字典中找到速度最快的字符。字符名称是关键,值是统计信息的元组。速度是值元组的索引6
。如何将之前的最高速度与当前值进行比较,看它是否更高?一旦我获得了速度,我如何获取该角色的类型(值元组中的索引1和2)并将它们作为列表返回?
示例数据:
d={'spongebob':(1,'sponge','aquatic',4,5,6,70,6), 'patrick':(1,'star','fish',4,5,6,100,1)}
Patrick的速度最高(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()
答案 0 :(得分:1)
如果我理解你的意思。
def fastest_type(db):
speed = 0
new = []
for key,value in db.items():
if speed < value[6]:
speed = value[6]
new = value[1:3]
return list(new) # return list instead of tuple
答案 1 :(得分:1)
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')