gpt4 book ai didi

python - 查找应该相等的不同字符串之间的相等性

转载 作者:太空狗 更新时间:2023-10-30 00:50:18 24 4
gpt4 key购买 nike

我有来自三个不同来源的关于足球队的数据。然而,来自这些来源的同一团队的“团队名称”在风格上有所不同。例如

[Source1]             [Source2]  [Source3]
Arsenal ARS Arsenal
Manchester United MNU ManUtd
West Bromwich Albion WBA WestBrom

现在我经常需要比较这些团队名称(来自不同或相同的来源)以检查它们是相同的还是不同的团队。例如

Arsenal == ARS  : True
MNU == WBA : False
WBA == WestBrom : True

我想知道是否有一种简洁的 pythonic 方式来实现这一目标。

我的想法是:创建一个 Team 类,它有一个元组列表,其中包含具有 3 个匹配团队名称的元组。实例化一个。每个团队名称的 Team 对象。然后覆盖类的 __eq__ 方法,我将在元组列表上执行 reduce 以查找所讨论的两个团队名称是否属于同一个元组表示相等。

一些伪代码:

class Team:
def __init__(self, teamname):
self.teams = [(Arsenal, ARS, Arsenal),
(Manchester United, MNU, ManUtd),
(West Bromwich Albion, WBA, WestBrom),]
self.teamname = teamname

def __eq__(self, teamA, teamB):
reduce(self.teams, <check if teamA and teamB in same tuple>)

想法?

P.S.:请为这个问题建议一个更好的标题,因为我认为我在这个问题上做得不好。

编辑:扩展了我建议的解决方案

最佳答案

为简单起见,您可以将所有内容放在平面规范查找中:

canonical = {'Arsenal':'ARS',
'ARS':'ARS',
'Manchester United':'MNU',
'MNU':'MNU',
'ManUtd':'MNU',
...}

那么等价性测试就很容易了:

if canonical[x] == canonical[y]:
#they're the same team

这里有很多不错的替代答案,如此广泛:如果您从不期望您的 canonical 查找发生变化,则此方法很好。您可以生成一次然后忘记它。如果它确实经常改变,维护起来会很痛苦,所以你应该看看别处。

关于python - 查找应该相等的不同字符串之间的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22510731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com