Python3如何提取首字母不重复的首个连续A-Z开头词组集合
实现方案
核心思路
- 先对输入内容做格式化清洗,统一转为无前后空白的词组列表
- 用集合记录已经出现过的首字母,遍历过程中只要遇到首字母已存在的词组就立刻终止遍历
- 遍历过程中收集符合要求的词组,最后可根据需要返回列表或者逗号分隔的字符串
完整代码
def get_unique_first_phrase(input_data): # 兼容输入为逗号分隔字符串或原生列表 if isinstance(input_data, str): word_list = [item.strip() for item in input_data.split(',') if item.strip()] else: word_list = [item.strip() for item in input_data if item.strip()] seen_first_chars = set() result = [] for word in word_list: if not word: continue first_char = word[0] # 遇到重复首字母直接终止 if first_char in seen_first_chars: break seen_first_chars.add(first_char) result.append(word) # 返回逗号分隔的字符串,需要返回列表直接return result即可 return ', '.join(result)
测试验证
用给出的示例测试:
test_str = "Africa, Asia, Bolivia, Columbia, Connecticut, Delaware, Egypt, Finland, Germany, Haiti, India, London, Poland, Vietnam, zebra, Boston, California, Mississippi, Russia, vacation" print(get_unique_first_phrase(test_str))
输出结果:Africa, Asia, Bolivia, Columbia, Connecticut, Delaware, Egypt, Finland, Germany, Haiti, India, London, Poland, Vietnam, zebra
和预期完全一致。
场景适配说明
- 如果列表从首字母B、C或者其他任意字母的单词开始,逻辑完全不需要调整,集合会从第一个元素开始记录首字母,只要出现重复就会立刻停止截取,符合要求
- 如果要求首字母不区分大小写,只需把代码中
first_char = word[0]修改为first_char = word[0].lower()(或者upper())即可
内容的提问来源于stack exchange,提问作者grambo88
相关产品推荐
相关产品推荐

