在orderedimportant lis中查找最大匹配的模式

2024-06-02 19:41:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到在我的项目中有一些反复出现的代码,涉及到找到列表中某个东西的“最佳匹配”,其中有一个重要的警告,即如果有一个平局,则选择第一个,即顺序很重要。你知道吗

项目是用python编写的,模式如下

things = <list of things>

highest_thing = None
highest_strength = 0

for thing in things:
    if thing.strength(some_params) > highest_strength:
        highest_thing = thing
        highest_strength = thing.strength(some_params)

我尝试使用内置的max函数来实现这一点,使用字典理解来实现从thing到它的strength的映射,但是字典失去了顺序。然后我在Python中找到了OrderedDict,但是考虑到最初的解决方案是多么简单,尽管看起来非常像C,但我觉得这比warrented要复杂得多。你知道吗

理想情况下,我想要

highest_thing = highest(things, some_params)

不必自己编写这个函数(这很好,但我忍不住认为有一个更好的解决方案)。你知道吗


Tags: 项目函数代码警告列表字典顺序some
1条回答
网友
1楼 · 发布于 2024-06-02 19:41:03

您确实需要使用max()函数,但不需要使用字典。你知道吗

使用key参数计算highest_strength值,max()应根据该值选择最高的内容:

highest_thing = max(things, key=lambda thing: thing.strength(some_params))

相关问题 更多 >