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

Python实现筛选无共同字母的国家-首都对的函数求助

如何实现检查国家名称与首都名称无共同字母的Python函数

核心思路

判断两个字符串是否无共同字母,最高效的方法是借助集合的交集特性:将两个字符串的字母统一转小写(消除大小写差异)后生成集合,若交集为空,则说明二者没有共同字母。

完整实现代码

def no_common_letters(countries):
    matching_pairs = []
    for country_name, capital_name, _ in countries:
        # 提取字符串中的字母并转小写,生成字符集合
        country_chars = set(char.lower() for char in country_name if char.isalpha())
        capital_chars = set(char.lower() for char in capital_name if char.isalpha())
        # 检查两个集合是否无交集
        if not country_chars.intersection(capital_chars):
            matching_pairs.append([country_name, capital_name])
    return matching_pairs

# 测试示例数据
countries = [
    ["China PR", "Beijing", 20693000],
    ["India", "New Delhi", 16787949],
    ["Japan", "Tokyo", 13491000],
    ["Philippines", "Manilla", 12877253],
    ["Russia", "Moscow", 11541000],
    ["Egypt", "Cairo", 10230350]
]

print(no_common_letters(countries))
# 输出:[['Japan', 'Tokyo'], ['Egypt', 'Cairo']]

代码细节说明

  • char.isalpha():过滤字符串中的非字母字符(如空格、数字),只保留有效字母
  • char.lower():统一转为小写,避免因大小写差异导致误判(比如"J"和"j"会被视为同一字符)
  • country_chars.intersection(capital_chars):等价于country_chars & capital_chars,用于获取两个集合的交集;若交集为空,if not ...条件成立
  • 遍历列表时用_占位,忽略不需要的人口数据字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:20:42