在有序重要列表中查找最大匹配的模式
Pattern for finding maximum match in ordered-important list
我注意到我的项目中有一些重复出现的代码,涉及在列表中找到某个内容的 'best match',重要的警告是如果有平局,则选择第一个,即顺序很重要.
项目在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)
无需自己编写此函数(这很好,但我忍不住认为有更好看的解决方案)。
您确实需要使用 max()
功能,但不需要使用字典。
使用 key
参数计算 highest_strength
值,max()
应该根据该值选择最高的东西:
highest_thing = max(things, key=lambda thing: thing.strength(some_params))
我注意到我的项目中有一些重复出现的代码,涉及在列表中找到某个内容的 'best match',重要的警告是如果有平局,则选择第一个,即顺序很重要.
项目在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)
无需自己编写此函数(这很好,但我忍不住认为有更好看的解决方案)。
您确实需要使用 max()
功能,但不需要使用字典。
使用 key
参数计算 highest_strength
值,max()
应该根据该值选择最高的东西:
highest_thing = max(things, key=lambda thing: thing.strength(some_params))