gpt4 book ai didi

python - 使用生成器表达式时如何从字典列表中获取项目的键

转载 作者:太空狗 更新时间:2023-10-30 02:24:32 27 4
gpt4 key购买 nike

我正在尝试了解生成器表达式及其工作原理。

我有一个这样的字典列表,

la = [ {'app_name': 'MKV58YCF8RR','time_diff': 17647},
{'app_name': 'ZXG68HYW4BA','time_diff': 18132}]

我想从中获取 time_diff 的最大值,我使用了 max

max_val = max(value["time_diff"] for value in la)

这给了我,

18132

但我还想打印此time_diffapp_name

预期输出:

ZXG68HYW4BA is 18132

当前输出

18132

谁能告诉我怎样才能同时获得 app_name key ?

编辑:

我想我需要使用 map 但不确定如何使用?

最佳答案

la 上使用 max 并提供一个可调用的 key 这样你就可以得到具有 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的每个元素调用criterion,并返回的元素>la 其中 criterion 是最大的。

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

关于python - 使用生成器表达式时如何从字典列表中获取项目的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52791866/

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