首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模糊匹配排序

模糊匹配排序
EN

Stack Overflow用户
提问于 2015-07-14 01:13:07
回答 1查看 365关注 0票数 1

我模糊地匹配了一个电影标题列表,并将它们与匹配值一起编译成另一个列表中的每个比较:

代码语言:javascript
复制
>>> fuzzy_matches
[(['White Warrior (Alpha Video)'], ['White Warrior (Alpha Video)'], 100), (['White Warrior (Alpha Video)'], ['White Warrior (Digiview Entertainment)'], 63), (['White Warrior (Alpha Video)'], ['White Warrior (Platinum)'], 78), (['White Warrior (Alpha Video)'], ['White Warrior (Platinum) / David And Goliath'], 63), (['White Warrior (Alpha Video)'], ['White Warrior (Platinum) / Duel Of Champions'], 61)]...etc

我希望将每个标题的匹配值相加,以便得到如下输出:

代码语言:javascript
复制
>>>([White Warrior (Alpha Video)], 248),
['White Warrior 2 (Digiview Entertainment)'], 390),
etc...

我已经尝试过几个使用片的实现,但是它很难看。

(不是我的确切代码,但这是丑陋):

代码语言:javascript
复制
for x in range(len(fuzzed)):
    for y in fuzzed(len(fuzzed)):

big_dict[fuzzy_matches[55][0][0]]=fuzzy_matches[55][2] + fuzzy_matches[56][3]...

有什么更有效的方法来实现这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-14 03:56:24

您可以使用dict来存储您想要的结果,然后如果您想要一个元组列表,您可以使用dict.items() (Python3.x)来获得这个结果。

例子-

代码语言:javascript
复制
>>> fuzzy_matches = [(['White Warrior (Alpha Video)'], ['White Warrior (Alpha Video)'], 100), (['White Warrior (Alpha Video)'], ['White Warrior (Digiview Entertainment)'], 63), (['White Warrior (Alpha Video)'], ['White Warrior (Platinum)'], 78), (['White Warrior (Alpha Video)'], ['White Warrior (Platinum) / David And Goliath'], 63), (['White Warrior (Alpha Video)'], ['White Warrior (Platinum) / Du
el Of Champions'], 61)]
>>>
>>> fuzzy_dict = {}
>>> for i in fuzzy_matches:
...     if i[0][0] not in fuzzy_dict:
...             fuzzy_dict[i[0][0]] = 0
...     fuzzy_dict[i[0][0]] += i[2]
...
>>> fuzzy_dict
{'White Warrior (Alpha Video)': 365}
>>> list(fuzzy_dict.items())
[('White Warrior (Alpha Video)', 365)]

如果使用Python2.x,则最终不需要list(...)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31396052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档