如何使用字符串索引筛选元组/列表中国家与首都首字母相同的元素
筛选国家与首都首字母相同元素的实现方案
核心逻辑是遍历嵌套结构里的每一组[国家名, 首都名],分别取两个字符串的第一个字符做等值判断,匹配的就保留。
基础实现(列表推导式)
如果仅需要快速得到结果,可以直接用列表推导式完成:
countries_and_capitals = ( ['Afghanistan', 'Kabul'], ['Albania', 'Tirana (Tirane)'], ['Algeria', 'Algiers'], ['Andorra', 'Andorra la Vella'], ['Angola', 'Luanda'], ['Antigua and Barbuda', "Saint John's"], ['Argentina', 'Buenos Aires'], ['Armenia', 'Yerevan']) # 筛选逻辑,首字母完全匹配(区分大小写,适配给定的首字母大写的数据源) result = [item for item in countries_and_capitals if item[0][0] == item[1][0]] # 打印结果验证 print(result)
运行后输出的结果就是符合要求的元素:
[['Algeria', 'Algiers'], ['Andorra', 'Andorra la Vella']]
封装为通用函数
如果需要频繁复用这个逻辑,可以封装为独立函数,还可以支持大小写不敏感的匹配:
def filter_same_first_letter(data: tuple, case_sensitive: bool = False) -> list: res = [] for country, capital in data: if not case_sensitive: # 大小写不敏感时统一转为大写对比 if country[0].upper() == capital[0].upper(): res.append([country, capital]) else: if country[0] == capital[0]: res.append([country, capital]) return res # 调用示例 print(filter_same_first_letter(countries_and_capitals))
注意事项
- 上述逻辑默认数据源的国家名、首都名都是非空字符串,如果存在空值需要提前加判空逻辑,避免索引报错
- 不需要考虑首字母外的其他字符,仅对比索引为0的第一个字符即可
内容的提问来源于stack exchange,提问作者jump
相关产品推荐
相关产品推荐

