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

Python中从结构不同的两个列表提取共同国名元素的方法

解决方案:提取两个列表中的共同国家名称

没问题,这事儿不难,我给你两种实用的方法,你可以根据需求选:

方法1:用集合快速找交集(高效,顺序可能变化)

首先我们得从列表a里把所有国家名称提取出来,然后和列表b做交集操作——集合的交集运算在处理这类匹配问题时特别高效。

# 你的原始数据(先修正列表b的格式,补上逗号)
a = [['Afghanistan', 'AF'], ['Åland Islands', 'AX'], ['Albania', 'AL'], ['Algeria', 'DZ'], ['American Samoa', 'AS'], ['Andorra', 'AD'], ['Angola', 'AO']]
b = ['Afghanistan', 'AFRICA', 'Albania', 'Algeria', 'Angola']

# 从a中提取所有国家名称
country_names_a = [country[0] for country in a]

# 计算两个列表的共同元素,转成列表
common_countries = list(set(country_names_a) & set(b))

print(common_countries)
# 输出示例(顺序可能因集合特性略有不同): ['Afghanistan', 'Albania', 'Algeria', 'Angola']

方法2:用列表推导式保持原顺序

如果你需要结果和列表a中国家出现的顺序一致,就用这种方法,它会逐个检查a里的国家是否在b中,保留原有顺序:

# 同样的原始数据
a = [['Afghanistan', 'AF'], ['Åland Islands', 'AX'], ['Albania', 'AL'], ['Algeria', 'DZ'], ['American Samoa', 'AS'], ['Andorra', 'AD'], ['Angola', 'AO']]
b = ['Afghanistan', 'AFRICA', 'Albania', 'Algeria', 'Angola']

country_names_a = [country[0] for country in a]
common_countries_ordered = [country for country in country_names_a if country in b]

print(common_countries_ordered)
# 输出: ['Afghanistan', 'Albania', 'Algeria', 'Angola']

补充说明

  • 列表b里的非国家元素(比如示例中的'AFRICA')会自动被过滤掉,因为它们不在a的国家名称列表里,完全符合你的需求。
  • 如果你的数据量很大,方法1的集合操作速度会比方法2快很多;如果对顺序有要求,优先选方法2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:43:51