You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:实现姓名相似度对比脚本的缺失Python代码模块

姓名相似度对比Python脚本补全方案

以下是你标记的「####################」步骤的具体实现,直接替换对应位置即可:

1. 识别重复字母

通过统计字母出现次数,筛选出重复的目标字母:

from collections import Counter

# 统计所有字母的出现频次
letter_counts = Counter(list_of_both)
# 提取出现次数>1的字母(若有多个重复字母可扩展逻辑)
repeated_letter = [letter for letter, count in letter_counts.items() if count > 1][0]

2. 识别重复字母的索引

遍历列表,记录目标字母的所有出现位置:

# 获取重复字母的全部索引
repeated_indices = [idx for idx, letter in enumerate(list_of_both) if letter == repeated_letter]
repeated_index1 = repeated_indices[0]  # 第一个重复位置
repeated_index2 = repeated_indices[1]  # 第二个重复位置

3. 删除重复字母(保留第一个)

复制原列表后,倒序删除后续重复索引(避免正序删除导致的索引移位问题):

list_without_repeated_letters = list_of_both.copy()
# 从后往前删除除第一个外的重复项
for idx in reversed(repeated_indices[1:]):
    del list_without_repeated_letters[idx]

4. 生成分值列表

遍历去重后的列表,为重复字母赋值repeated_letter_value,其余字母赋值1:

points = [repeated_letter_value if letter == repeated_letter else 1 for letter in list_without_repeated_letters]

完整补全后的代码

from collections import Counter

name_1 = ("Mike").lower() #"mike"
name_2 = ("Chris").lower() #"chris"

list_name_1 = [i for i in name_1] #["m", "i", "k", "e"]
list_name_2 = [i for i in name_2] #["c", "h", "r", "i", "s"]

list_of_both = list_name_1 + list_name_2 #["m", "i", "k", "e", "c", "h", "r", "i", "s"]

#Python识别到字母"i"重复,将其存入该变量:
letter_counts = Counter(list_of_both)
repeated_letter = [letter for letter, count in letter_counts.items() if count > 1][0]

#Python识别重复字母所在的索引:
repeated_indices = [idx for idx, letter in enumerate(list_of_both) if letter == repeated_letter]
repeated_index1 = repeated_indices[0] #第一个重复索引
repeated_index2 = repeated_indices[1] #第二个重复索引

#Python删除重复字母的所有索引,但保留第一个:
list_without_repeated_letters = list_of_both.copy()
for idx in reversed(repeated_indices[1:]):
    del list_without_repeated_letters[idx]

#Python为每个缺失的字母给"deleted_summary"变量加1分:
deleted_summary = len(list_of_both) - len(list_without_repeated_letters) #1

#Python将"repeated_letter_value"变量设为"deleted_summary + 1",因为有一个索引未被删除:
repeated_letter_value = deleted_summary + 1 #2

#Python为"list_without_repeated_letters"中的每个字母赋值1分,但重复字母"i"使用repeated_letter_value作为分值:
points = [repeated_letter_value if letter == repeated_letter else 1 for letter in list_without_repeated_letters]

内容的提问来源于stack exchange,提问作者empress

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 11:03:15