【发布时间】:2015-05-29 11:47:06
【问题描述】:
我注意到我的项目中有一些重复出现的代码,包括找到与列表中某项内容的“最佳匹配”,重要的警告是,如果出现平局,则选择第一个,即顺序很重要。
项目是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,但我觉得这比预想的要复杂得多。
理想情况下,我想要类似的东西
highest_thing = highest(things, some_params)
不必自己编写这个函数(这很好,但我不禁认为有一个更好看的解决方案)。
【问题讨论】: