我当前正在编写一个脚本,该脚本应该能够查看字符串是否与给定的部分首字母缩写匹配。
在这种情况下,我从列表中获取每个元素,该列表是一个字符串,并对列表中每个字符串中的每个字符求和。
从那里,我想将候选单词的字母与列表中每个单词的字母进行比较。
完成后,将剥离候选单词的第一个字母,然后对列表中的下一个字符串与新截断的字符串进行比较。
所以理想情况下
1st iteration:
input:
word_list = ['toronto', 'dominion', 'bank']
candidate = 'tdbank'
output:
1 matching characters
new candidate word = 'dbank'
2nd iteration:
input:
word_list = ['dominion', 'bank']
candidate = 'dbank'
output:
1 matching characters
new candidate word = 'bank'
3rd iteration:
input:
word_list = ['bank']
candidate = 'bank'
output:
4 matching characters
new candidate word = 'bank'
total_matches = 6
进行迭代,直到达到列表的长度。每个匹配的计数都被返回并求和,因此将两个示例输出的总和为7。这是我到目前为止编写的代码,我无法保存每个数字并将其求和为最终整数并不断截断候选字母。
def compare(a, b):
count = 0
for x, y in zip(a, b):
if x == y:
count += 1
return count
init_sum = len(''.join(init_name_list))
c = 0
for i,j in enumerate(init_name_list):
c = compare(j, candidate)
t_candidate = candidate[1:]
c = compare(j, t_candidate)
sim = c/init_sum
这不是最有效的方法,但是我只想让它首先工作,所以如果有人理想地知道一种更快/更好的方法,而又不会创建令人敬畏的软件包依赖关系!
答案 0 :(得分:1)
这是我认为您要尝试执行的操作
c = []
for word in init_name_list:
c.append(compare(word, candidate))
candidate = candidate[c[-1]:] #truncates string
sim = sum(c) / init_sum