告诉max()
如何计算一系列索引的最大值:
max(range(len(ld)), key=lambda index: ld[index]['size'])
这将返回size
键值最高的索引:
>>> ld = [{'prop': 'foo', 'size': 100}, {'prop': 'boo', 'size': 200}]
>>> max(range(len(ld)), key=lambda index: ld[index]['size'])
1
>>> ld[1]
{'size': 200, 'prop': 'boo'}
如果你一直想要那个字典,那么你可以使用:
max(ld, key=lambda d: d['size'])
你可以使用 enumerate()
获取索引 和 字典:
max(enumerate(ld), key=lambda item: item[1]['size'])
更多演示:
>>> max(ld, key=lambda d: d['size'])
{'size': 200, 'prop': 'boo'}
>>> max(enumerate(ld), key=lambda item: item[1]['size'])
(1, {'size': 200, 'prop': 'boo'})
key
函数依次接收输入序列中的每个元素,max()
函数会选择该key
函数返回值最高的元素。
使用单独的列表提取所有size
值,然后将其映射回原始列表并不是很有效(现在需要对列表进行两次迭代)。list.index()
无法工作,因为它必须匹配整个字典,而不仅仅是其中一个值。
d.get("size", float("-inf"))
;这将使用负无穷作为默认值,以确保这些条目被视为具有小于任何最小值的值。或者,先过滤掉那些条目。 - Martijn Pieters