如何在Python中提取JSON数组的所有name值?有无非循环简化方法?
提取JSON数组中所有name值的简化实现
你当前用for循环提取name值的写法是有效的,但Python提供了更简洁的方式,不用写显式的for循环:
1. 列表推导式(推荐)
这是Python里最常用的简化写法,代码紧凑且可读性高:
import json # 定义JSON数据 jsondata = """[ { "name":"Pen", "unit_price":5 }, { "name":"Eraser", "unit_price":3 }, { "name":"Pencil", "unit_price":10 }, { "name":"White paper", "unit_price":15 } ]""" items = json.loads(jsondata) # 用列表推导式直接生成name数组 namelist = [item['name'] for item in items] print(namelist)
运行结果:['Pen', 'Eraser', 'Pencil', 'White paper']
2. 使用map()函数
也可以结合map()和lambda表达式实现,不过可读性不如列表推导式:
namelist = list(map(lambda x: x['name'], items))
另外注意你原代码里导入的from unicodedata import name完全多余,建议删掉,避免和字典的name键产生命名冲突。
需要说明的是:这两种方法底层依然会执行循环逻辑,但不需要你编写显式的for语句,属于Python语法层面的简化,让代码更简洁。
内容的提问来源于stack exchange,提问作者kumar
相关产品推荐
相关产品推荐

