繁体   English   中英

同时使用 max 和过滤字典列表

[英]Use max and filter a list of dicts at the same time

我正在尝试filter字典列表,同时使用max function 根据键/值从该列表中获取最大值:

closest_objects = [
    obj for obj in my_list
    if obj['start_date'].date() <= today
]

closest_object = max(
    closest_objects, key=lambda obj: obj['start_date']
)

return closest_object['todo_on_this_date']

但是我想知道如果有最快的方法或简化的方法,是否有更好的方法来实现此代码。

您可以使用生成器表达式来避免显式构造过滤列表:

closest_object = max((obj for obj in my_list if obj['start_date'].date() <= today),
                     key=lambda obj: obj['start_date'])

使用filtermax看起来像这样:

max(
    filter(lambda _: _["start_date"].date() <= today, my_list), 
    key=lambda _: _["start_date"]
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM