Python如何遍历JSON对象数组并返回匹配指定键值对的字典
问题分析与修正方案
原代码错误点
- 不必要的JSON解析:传入的
obj本身就是Python列表结构,不是JSON字符串,不需要调用json.loads();同时函数内错误引用了全局变量item,没有使用传入的obj参数,还出现了变量名冲突。 - 循环内访问对象错误:遍历数组得到的每个元素是单条数据,判断条件里错误访问了整个数组,应该访问当前遍历到的单个元素。
- 语法错误:判断相等误用了赋值运算符
=,应该用相等判断运算符==;且if语句末尾缺少必须的冒号:。 - 返回值错误:匹配到结果时返回了整个数组,应该返回匹配到的单个元素对象。
修正后的完整代码
def func(obj, val_to_search, key_to_search): for entry in obj: # 先判断键是否存在,避免触发KeyError if key_to_search in entry and entry[key_to_search] == val_to_search: return entry # 无匹配结果时返回None return None # 测试用例 item = [{'name': 'first'}, {'name': 'second', 'something': 'something4'}, {'name': 'third', 'hu': 'g'}] # 测试检索name=first print(func(obj=item, val_to_search='first', key_to_search='name')) # 测试检索name=third print(func(obj=item, val_to_search='third', key_to_search='name'))
运行后输出结果为:
{'name': 'first'} {'name': 'third', 'hu': 'g'}
内容的提问来源于stack exchange,提问作者Slava
相关产品推荐
相关产品推荐

