【发布时间】:2020-02-09 14:09:55
【问题描述】:
我有 2 个来自 2 个不同来源的玩家姓名列表。
names1 = ['C.J. McCollum', 'Metta World', 'LeBron James', 'Stephen Curry']
names2 = ['Metta World Peace', 'Steph Curry', 'Kevin Durant', 'CJ McCollum']
这里的问题是,尽管他们是同一个球员,但在 2 个来源中提到他们名字的方式存在一些差异。我使用以下代码查找相似的名称(names1 中的所有字符都应存在于names2 中):
idx = np.zeros(3)
i = 0
for x, y in enumerate(names1):
for z, w in enumerate(names2):
if y in w:
idx[i] = x
i = i+1
对于names1的每次迭代,names2的所有迭代中的代码,并输出与names2中的条目相似的条目的索引。 idx 是一个列表,应该包含相似字符串的索引。 i 是idx 的索引。每次找到类似的字符串时,将其存储在idx 中,i 增加 1,以便将找到的下一个条目记录在索引 i+1 的 idx 中。
预期答案:
idx = [0, 1, 3]
但是我收到以下错误:
list assignment index out of range
我该如何修复代码,有没有更好的方法来解决这个问题?
【问题讨论】:
-
即使你没有错误,你的结果将是一个空数组或全为零,我认为你正在寻找
y in w,关于你的问题我不认为有一个通用的解决方案可以在没有一些基本规则的情况下找到相似的字符串 -
感谢您指出我的错误。我已经更新了我的问题。 (对于给您带来的不便,我深表歉意,我还是 Stack Overflow 的新手)
标签: python string for-loop if-statement