Python-如何在for循环中将新值与先前值进行比较?

标签 python python-3.x dictionary for-loop iteration

我的函数需要在字典中找到速度最快的字符。角色名称是键,值是统计元组。速度是值元组的索引6。如何比较之前的最高速度和当前值是否更高?一旦获得速度,我如何获取该字符的类型(值元组中的索引 1 和 2)并将它们作为列表返回?

示例数据:

d={'spongebob':(1,'sponge','aquatic',4,5,6,70,6), 'patrick':(1,'star','fish',4,5,6,100,1)}

帕特里克的速度最高(100),他的类型是starfish。应该返回[星星,鱼]

这是我当前的代码,该代码不起作用,因为我不知道如何比较以前的代码和当前的代码:

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/

相关文章:

python - 如何跳过 `for` 循环中的第一个元素?

python - 一个类的方法之间的差异,哪些是 "function"哪些是 "bound method"?

python - 我应该使用什么模式来打印以下代码的日期、时间和进程 ID?

jquery - 检索字典值 jinja

c# - 字典如何进行快速查找

javascript - mapbox.js 上的自动完成输入

python - 使用组合框禁用/启用小部件?

带有本地套接字的 Python PaaS

python - PySpark - 将列表的列转换为行

Python 精度处理