如何用For循环从字典列表生成指定格式的城市名称列表?
问题:如何生成城市名称列表并输出指定格式?
原始城市数据
cities = [{'City': 'Buenos Aires', 'Country': 'Argentina', 'Population': 2891000, 'Area': 4758}, {'City': 'Toronto', 'Country': 'Canada', 'Population': 2800000, 'Area': 2731}, {'City': 'Pyeongchang', 'Country': 'South Korea', 'Population': 2581000, 'Area': 3194}, {'City': 'Marakesh', 'Country': 'Morocco', 'Population': 928850, 'Area': 200}, {'City': 'Albuquerque', 'Country': 'New Mexico', 'Population': 559277, 'Area': 491}, {'City': 'Los Cabos', 'Country': 'Mexico', 'Population': 287651, 'Area': 3750}, {'City': 'Greenville', 'Country': 'USA', 'Population': 84554, 'Area': 68}, {'City': 'Archipelago Sea', 'Country': 'Finland', 'Population': 60000, 'Area': 8300}, {'City': 'Walla Walla Valley', 'Country': 'USA', 'Population': 32237, 'Area': 33}, {'City': 'Salina Island', 'Country': 'Italy', 'Population': 4000, 'Area': 27}, {'City': 'Solta', 'Country': 'Croatia', 'Population': 1700, 'Area': 59}, {'City': 'Iguazu Falls', 'Country': 'Argentina', 'Population': 0, 'Area': 672}]
需求
遍历上述列表,将每个字典中的City字段值添加到city_names列表中,生成包含所有城市名称的列表,并输出为指定的列表格式。
当前代码与输出
现有代码
city_indices = list(range(0,len(cities))) for city_names in city_indices: print(cities[city_names]["City"])
当前输出
Buenos Aires Toronto Pyeongchang Marakesh Albuquerque Los Cabos Greenville Archipelago Sea Walla Walla Valley Salina Island Solta Iguazu Falls
期望输出
["Buenos Aires", "Toronto", "Pyeongchang", "Marakesh", "Albuquerque", "Los Cabos", "Greenville", "Archipelago Sea", "Walla Walla Valley", "Salina Island", "Solta", "Iguazu Falls"]
修改方案
方法1:基础循环构建列表+手动格式化输出
先初始化空列表,直接遍历cities取出城市名存入列表,再手动拼接成期望的格式:
city_names = [] # 直接遍历列表中的字典,无需通过索引 for city in cities: city_names.append(f'"{city["City"]}"') # 拼接成指定格式的字符串并打印 print('[' + ',\n'.join(city_names) + ']')
方法2:列表推导式快速构建+JSON格式化输出
用列表推导式一行生成目标列表,借助json模块快速生成带换行的格式:
import json # 列表推导式直接生成城市名称列表 city_names = [city['City'] for city in cities] # 用json.dumps生成带缩进的格式,再调整输出 print(json.dumps(city_names, indent=2)[1:-1])
关键说明
- 原代码的核心问题是没有构建目标列表,仅逐个打印元素;且通过索引遍历的写法冗余,直接遍历
cities中的字典更简洁。 - 两种方法都能生成符合要求的输出:手动拼接更灵活,JSON格式化则更高效规范。
内容的提问来源于stack exchange,提问作者Gabriel Romero
相关产品推荐
相关产品推荐

