You need to enable JavaScript to run this app. Python实现含连续重复字母国家元组生成与正确排序的问题修正
优惠活动
大模型
产品
解决方案
定价
更多

Python实现含连续重复字母国家元组生成与正确排序的问题修正

现有代码核心缺陷排查
  • 多词国家名称丢失:原代码将国家名按空格拆分逐词匹配,仅将匹配到的单个单词存入结果列表,完全丢失多词国家的完整结构,比如「saint kitts and nevis」被拆成单独的「Kitts」,「sierra leone」被拆成单独的「Sierra」。
  • 结果提取逻辑错误:匹配成功后仅返回匹配到的单词片段,而非对应的完整国家名称,导致输出结果均为破碎的单词,和预期的完整国家名不符。
  • 大小写格式不统一:直接使用原始国家名的大小写格式,未做统一转换,和预期输出的全小写格式存在差异。
  • 排序规则完全偏离:原代码直接对存入的单词片段按字典序排序,未按要求以「国家名内包含的连续重复字母」为排序依据,导致顺序和预期完全不符。
  • 函数逻辑不规范:入参被内部逻辑直接覆盖,没有实际接收国家列表的作用;函数仅打印结果未按要求返回元组,无法被后续逻辑调用。
  • 正则匹配方式错误:使用match()方法逐词匹配字符串开头内容,既无法定位整个国家名里的连续重复字母,也无法提取重复字母用于排序。
修正后的实现代码
import re

def get_doubled_letter_countries(countries):
    """
    构造并返回包含连续重复字母的国家组成的元组
    元组排序规则:按国家名中连续重复字母的字母表顺序排序
    """
    # 编译正则:匹配字符串中任意位置的连续相同字母,捕获重复的单个字符
    doubled_pattern = re.compile(r'(.)\1', re.IGNORECASE)
    matched_entries = []

    for country in countries:
        match_result = doubled_pattern.search(country)
        if match_result:
            # 提取重复字母,转小写作为排序主键
            repeat_char = match_result.group(1).lower()
            # 国家名统一转小写,完整保留原始结构(含空格、连字符)
            normalized_country = country.lower()
            matched_entries.append((repeat_char, normalized_country))
    
    # 排序:先按重复字母的字典序排序,重复字母相同时按国家名本身的字典序排序
    matched_entries.sort(key=lambda item: (item[0], item[1]))
    # 提取排好序的国家名称,转换为元组返回
    return tuple(entry[1] for entry in matched_entries)
代码修正点说明
  • 不再拆分国家名:直接对完整的国家名字符串做正则匹配,完整保留多词国家、带连字符国家的原始结构,不会出现名称破碎的问题。
  • 统一格式输出:所有存入结果的国家名统一转换为小写,和预期输出的格式完全匹配。
  • 正确实现排序规则:将每个国家提取到的连续重复字母作为排序主依据,按字母表顺序排列;重复字母相同的国家按照名称本身的字典序排列,最终得到的结果顺序和预期完全一致。
  • 规范函数逻辑:函数接收完整的国家列表作为入参,最终返回构造好的元组,而非直接打印,符合函数的设计要求。
  • 优化正则匹配逻辑:使用search()方法在整个国家名字符串中查找连续重复字母,准确捕获用于排序的字符,避免逐词匹配导致的逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 21:06:08