如何使用countries API筛选数据查找使用人数最多的15种语言
基于Countries API的语言数据查询实现方案
实现思路
- 数据拉取:调用给定的API拉取所有国家的公开数据,优先处理网络异常、请求失败等边界情况,将返回的JSON数据转为Python字典列表方便后续处理
- 语言总数统计:遍历每个国家的语言字段,用集合存储所有语言的唯一编码/名称,利用集合自动去重的特性,集合长度就是API收录的语言总数量
- 使用人数聚合:遍历所有国家数据时,对每个国家包含的每一门语言,累加该国家的总人口数作为该语言的累计使用人数(采用通用统计口径:一国人口全部计入该国所有官方/通用语言的使用人数)
- Top15筛选:将聚合好的「语言-使用人数」键值对按人数倒序排序,截取前15条即可得到使用人数最多的15种语言
可运行代码示例
依赖安装
首先安装依赖库requests用于发送网络请求:
pip install requests
完整代码
import requests from collections import defaultdict # 给定的API地址 API_URL = 'https://restcountries.eu/rest/v2/all' def main(): # 1. 拉取API数据 try: resp = requests.get(API_URL, timeout=10) resp.raise_for_status() countries_data = resp.json() except Exception as e: print(f"数据拉取失败:{e}") return # 2. 统计语言总数量 + 聚合语言使用人数 unique_langs = set() lang_population = defaultdict(int) for country in countries_data: country_pop = country.get('population', 0) # 遍历当前国家的所有语言 for lang in country.get('languages', []): # 用iso639-1编码作为唯一标识避免同名语言冲突 lang_code = lang.get('iso639_1') lang_name = lang.get('name', '未知语言') if lang_code: unique_langs.add(lang_code) lang_population[f"{lang_name}({lang_code})"] += country_pop # 3. 输出统计结果 print(f"API收录的语言总数量:{len(unique_langs)}") print("\n全球使用人数最多的15种语言:") # 按使用人数倒序排序取前15 sorted_langs = sorted(lang_population.items(), key=lambda x: x[1], reverse=True)[:15] for idx, (lang_name, pop) in enumerate(sorted_langs, 1): # 人数格式化方便阅读 format_pop = f"{pop / 100000000:.2f}亿" if pop >= 100000000 else f"{pop / 10000:.2f}万" print(f"{idx}. {lang_name}:{format_pop}") if __name__ == "__main__": main()
运行说明
代码运行后会先输出API收录的语言总数量,再按使用人数从高到低输出前15种语言,人数会自动按亿/万单位格式化方便阅读。如果遇到接口请求失败的情况,会直接打印错误信息退出。
内容的提问来源于stack exchange,提问作者Aman Kumar
相关产品推荐
相关产品推荐

