gpt4 book ai didi

python - 使用 itemgetter() 方法根据元组的第二个值在字典中查找键值对

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:13 26 4
gpt4 key购买 nike

我有以下字典:

inventory = {'apple':(3, 133), 'banana':(9, 407), 'pear':(17, 205), 'orange':(1, 91)}

我想根据元组中第二个元素的最大值找到键值对,所以在这种情况下它应该返回:banana':(9, 407)我知道我可以使用 lambda 得到这个结果:

key_max = max(inventory.keys(), key=(lambda k: inventory[k][1]))    
print key_max, inventory[key_max]

但是我尝试使用 itemgetter() 方法接收相同的结果,因为我读到它更快但我只能根据元组的第一个元素的值获取数据:

from operator import itemgetter 
print max(inventory.iteritems(), key = itemgetter(1))

有没有一种方法可以使用 itemgetter() 方法获得相同的结果?

最佳答案

虽然我不明白这个练习的意义...

这是一个使用 itemgetter没有 lambdas 的解决方案,就像原来的问题一样:

key = max(zip(inventory.keys(), map(itemgetter(1), inventory.values())), key=itemgetter(1))[0]

print(key, inventory[key])
# banana (9, 407)

请注意,以上内容仅在 Python 3.x 中有效,其中内置函数返回迭代器/ View 对象 而不是列表。

同等高效的 Python 2.x 等价物需要使用库函数,例如 itertools.izip:

# from itertools import izip, imap

key = max(izip(inventory.iterkeys(), imap(itemgetter(1), inventory.itervalues())), key=itemgetter(1))[0]

print key, inventory[key]

关于python - 使用 itemgetter() 方法根据元组的第二个值在字典中查找键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55301794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com