在la上使用max并提供可调用键,以便获得time_diff值最高的整个字典.
>>> la = [{'app_name': 'MKV58YCF8RR','time_diff': 17647},
... {'app_name': 'ZXG68HYW4BA','time_diff': 18132}]
>>>
>>> max_d = max(la, key=lambda d: d['time_diff']) # dict with max time_diff
>>> print('{d[app_name]} is {d[time_diff]}'.format(d=max_d))
ZXG68HYW4BA is 18132
thank you, i don’t understand how lambda is working here if there is no loop to iterate entire list.
不要被lambda分心.它被用作选择la的最大值的标准,但我们也可以将其写为正常函数.
>>> def criterion(dictionary):
... return dictionary['time_diff']
...
>>> max(la, key=criterion)
{'app_name': 'ZXG68HYW4BA', 'time_diff': 18132}
max迭代la,使用la的每个元素调用标准,并返回标准最大的la元素.
can I extract it just like you did with lambda, while using itemgetter instead?
当然!
>>> import operator
>>> max_d = max(la, key=operator.itemgetter('time_diff'))
>>> print('{d[app_name]} is {d[time_diff]}'.format(d=max_d))
ZXG68HYW4BA is 18132