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

Python:从嵌套字典列表中提取城市名的列表推导式实现

从嵌套字典列表中提取所有城市名的正确实现方案

需求说明

从给定的嵌套字典列表结构cities_response_data中提取所有城市名,生成形如['Paris','Berlin','Tokyo','Sydney']的列表,但尝试多种推导式均未得到正确结果,现给出正确实现及原理解释。

错误写法及结果

  • 写法1:cities = [city for city in cities_response_data["prices"][0]["city"]],结果:['P', 'a', 'r', 'i', 's']
  • 写法2:cities = [value for (key,value) in cities_response_data["prices"][0]["city"]],结果:ValueError: not enough values to unpack (expected 2, got 1)
  • 写法3:cities = [value for (key,value) in cities_response_data["prices"][0].items()],结果:['Paris', '', 54, 2]
  • 写法4:cities = {city for city in cities_response_data["prices"][0]},结果:{'lowestPrice', 'id', 'iataCode', 'city'}
  • 写法5:cities = {city for city in cities_response_data["prices"][0]["city"].items()},结果:AttributeError: 'str' object has no attribute 'items'
  • 写法6:cities = {city for city in cities_response_data["prices"][0]["city"].iterows},结果:AttributeError: 'str' object has no attribute 'iterows'
  • 写法7:cities = [value for value in ["".join([value for value in cities_response_data["prices"][0]["city"]])]],结果:['Paris']

正确实现代码

cities = [item["city"] for item in cities_response_data["prices"]]

代码原理解释

  • cities_response_data["prices"]是一个由字典组成的列表,每个字典对应一条包含城市信息的记录,其中"city"键对应城市名字符串。
  • 列表推导式的逻辑是遍历prices列表中的每一个字典元素item,直接提取每个字典里"city"键对应的值,最终将所有城市名收集成一个列表。
  • 之前的错误核心问题:要么只遍历了prices列表的第一个元素(通过[0]索引),导致只获取单个城市;要么错误地将字符串类型的城市名当成可迭代的键值对或列表来遍历,从而引发字符拆分、类型不匹配等错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:55:01