我在项目中注意到了一些重复出现的代码,包括找到最佳匹配'对于列表中的某些内容,重要的警告是,如果存在平局,则选择第一个,即顺序很重要。
项目在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,但是感觉这导致了比warrented更多的复杂性,考虑到原始解决方案的简单程度,尽管看起来非常像C语言。
理想情况下,我想要像
这样的东西highest_thing = highest(things, some_params)
无需自己编写此功能(这很好,但我可以提供帮助,但我认为这是一个更好看的解决方案)。
答案 0 :(得分:1)
您确实需要使用max()
功能,但不需要使用字典。
使用key
参数来计算highest_strength
应该选择最高级别的max()
值:
highest_thing = max(things, key=lambda thing: thing.strength(some_params))