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
相关产品推荐
相关产品推荐

