首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何遍历2个JSON列表(混合dict和list),匹配特定值并打印另一个值

在遍历两个JSON列表(混合dict和list)并匹配特定值并打印另一个值的问题中,可以使用递归的方式来实现。

首先,我们需要定义一个函数来遍历JSON列表。该函数将接受两个参数:要遍历的JSON列表和要匹配的特定值。函数将递归地遍历列表中的每个元素,并检查是否存在匹配的特定值。

如果当前元素是一个字典(dict),我们将递归地调用该函数来遍历字典的值。如果当前元素是一个列表(list),我们将遍历列表中的每个元素,并递归地调用该函数。

当找到匹配的特定值时,我们将打印另一个值。在这个例子中,我们假设要打印的是与特定值相邻的下一个值。

下面是一个示例代码:

代码语言:txt
复制
def traverse_json(json_list, target_value):
    for item in json_list:
        if isinstance(item, dict):
            traverse_json(list(item.values()), target_value)
        elif isinstance(item, list):
            traverse_json(item, target_value)
        elif item == target_value:
            index = json_list.index(item)
            if index < len(json_list) - 1:
                print(json_list[index + 1])

# 示例数据
json_list1 = [
    {"name": "John", "age": 25},
    [1, 2, 3],
    {"name": "Alice", "age": 30},
    [4, 5, 6]
]

json_list2 = [
    {"name": "Bob", "age": 35},
    [7, 8, 9],
    {"name": "Alice", "age": 30},
    [10, 11, 12]
]

# 调用函数并打印结果
traverse_json(json_list1, "Alice")
traverse_json(json_list2, 30)

在上面的示例中,我们定义了一个名为traverse_json的函数来遍历JSON列表。我们使用isinstance函数来检查当前元素的类型,并根据类型进行相应的处理。当找到匹配的特定值时,我们使用index函数来获取该值在列表中的索引,并打印与其相邻的下一个值。

请注意,这只是一个示例代码,实际应用中可能需要根据具体情况进行适当的修改和调整。此外,对于更复杂的JSON结构,可能需要更复杂的逻辑来处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2 Python 基础: 列表及字典内置函数&方法内容梳理

,这里有答案 11 Python 基础:知识巩固,实现一个简易学生管理系统 12 Python 基础:如何优化代码质量,错误、调试测试你必须要懂 13 Python 基础:模块的概念及使用方法着重介绍两个常用模块...image.png list.extend(seq) 在列表末尾一次性追加另一个序列中的多个(用新列表扩展原来的列表) ?...image.png list.index(obj) 从列表中找出某个第一个匹配项的索引位置 ? image.png list.insert(index, obj) 将对象插入列表 ?...image.png list.remove(obj) 移除列表中某个的第一个匹配list.reverse() 反向列表中元素 ?...image.png 5.dict.items() 以列表返回可遍历的(键, ) 元组数组 ? image.png 6.dict.keys() 以列表返回一个字典所有的键 ?

1.1K20

2 Python 基础: 列表及字典内置函数&方法内容梳理

统计某个元素在列表中出现的次数 [image.png] list.extend(seq) 在列表末尾一次性追加另一个序列中的多个(用新列表扩展原来的列表) [image.png] list.index...(obj) 从列表中找出某个第一个匹配项的索引位置 [image.png] list.insert(index, obj) 将对象插入列表 [image.png] list.pop(obj=list-...1) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的 [image.png] list.remove(obj) 移除列表中某个的第一个匹配list.reverse() 反向列表中元素...true,否则返回false(**python3**之后没了) [image.png] 5.dict.items() 以列表返回可遍历的(键, ) 元组数组 [image.png]...key必须给出。 否则,返回default。 [image.png] [image.png] 11.popitem() 随机返回删除字典中的一对键。 [image.png]

71940
  • python入门——python数据类型

    3、list.extend(seq):在列表末尾一次性追加另一个序列中的多个(用新列表扩展原来的列表) 4、list.index(obj):从列表中找出某个第一个匹配项的索引位置 5、list.insert...(index, obj):将对象插入列表 6、list.pop(obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的 7、list.remove(obj):移除列表中某个的第一个匹配项...(dict1) 2、遍历字典 在遍历字典前,先学习一下字典内置的函数方法,在遍历时,结合函数方法遍历输出; python字典的函数。...key必须给出。否则,返回default popitem() 随机返回删除字典中的一对键。...: print(key.upper() + "大爷的") #遍历字典中多有的使用set()方法去重; dict1['27'] = 'a' print(dict1['27']) for value

    1.8K10

    Python常见数据类型处理

    列表) 增、删、改、查: my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8] # 1、增 my_list.append('333') # 将另一个集合中添加到列表中 insert_list...函数内置方法 方法 序号 list.append(obj) 在列表末尾添加新的对象 list.count(obj) 统计某个元素在列表中出现的次数 list.extend(seq) 在列表末尾一次性追加另一个序列中的多个...(用新列表扩展原来的列表list.index(obj) 从列表中找出某个第一个匹配项的索引位置 list.insert(index, obj) 将对象插入列表 list.pop([index=-1...\]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的 list.remove(obj) 移除列表中某个的第一个匹配list.reverse() 反向列表中元素 list.sort(...popitem() 返回删除字典中的最后一对键。 4、Set(集合) 集合(set)是一个无序的不重复元素序列。 集合中的元素不会重复,并且可以进行交集、集、差集等常见的集合操作。

    8300

    Python语法

    数据类型 文本类型: str 数值类型: int, float, complex 序列类型: list, tuple, range 映射类型: dict 集合类型: set, frozenset 布尔类型...symmetric_difference_update() 插入此集合另一个集合的对称差集。 union() 返回包含集合并集的集合。 update() 用此集合其他集合的集来更新集合。...rsplit() 在指定的分隔符处拆分字符串,返回列表。 rstrip() 返回字符串的右边修剪版本。 split() 在指定的分隔符处拆分字符串,返回列表。...使用 range() 函数: for x in range(10): print(x) 迭代器 从元组返回一个迭代器,打印每个: mytuple = ("apple", "banana", "cherry...JSON 时,Python 对象会被转换为 JSON(JavaScript)等效项: Python JSON dict Object list Array tuple Array str String

    3.2K20

    python-元组,字典,列表

    (key) 如果键在字典dict里返回true,否则返回false 6 dict.items() 以列表返回可遍历的(键, ) 元组数组 7 dict.keys() 以列表返回一个字典所有的键...key必须给出。 否则,返回default。 12 popitem() 返回删除字典中的最后一对键。...2 list.count(obj) 统计某个元素在列表中出现的次数 3 list.extend(seq) 在列表末尾一次性追加另一个序列中的多个(用新列表扩展原来的列表) 4 list.index...(obj) 从列表中找出某个第一个匹配项的索引位置 5 list.insert(index, obj) 将对象插入列表 6 list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素...),并且返回该元素的 7 list.remove(obj) 移除列表中某个的第一个匹配项 8 list.reverse() 反向列表中元素 9 list.sort(cmp=None, key

    1.1K40

    测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)

    把行作为输入,赋值给$0->将行切段,从$1开始->对行匹配正则/执行动作->打印内容; awk 'pattern + action' [filenames] 常用语法: filename awk 浏览的文件名... tuple 及 list 的区别(这里列的是主要区别,面试足够) tuple 是不可变对象,list dict 都是可变对象,这里的不可变指的是指向地址不可变; list 是有序的,dict...3.JSON dict 的区别 JSON 是一种数据格式,纯字符串。...); JSON 的 key 可以是有序、可重复的;dict 的 key 不可重复,且无序; JSON 任意 key 存在默认 undefined,dict 默认没有默认JSON 访问方式可以是[...6.常见手撕代码题 两个列表提取作为字典 dict(zip(list1, list2)) 字符串反转输出 str = '1234567890' print(str[::-1]) l = list(str

    1.3K40

    Python网络爬虫基础进阶到实战教程

    很多时候,我们需要遍历整个文档树来查找特定的节点,或者获取节点的属性和文本内容。...然后,我们使用CSS选择器’p.para1’搜索文档树,获取所有满足条件的p标签。最后,我们遍历p列表打印出每个标签的文本内容。 好的,接下来我再给出三个代码案例。...然后,我们使用soup.find_all(class_=pattern)来搜索文档树,获取所有满足条件的标签,遍历列表打印出每个标签的文本内容。...首先,我们定义了一个包含多个手机号码的列表创建了一个正则表达式对象pattern。该正则表达式匹配以1开头的11位数字字符串,其中第二位数字介于39之间。...然后,我们使用re.findall()方法分别提取百分数单位符号,并以列表的形式返回。最后,我们使用for循环遍历两个列表,并将相同位置上的元素打印在一起。

    16210

    Python数据处理(一):处理 JSON、XML、CSV 三种格式数据

    这本书主要讲了如何用 Python 处理各种类型的文件,如 JSON、XML、CSV、Excel、PDF 等。后面几章还会讲数据清洗、网页抓取、自动化规模化等使用技能。.../data.json').read() # 对json数据解码 data = json.loads(json_data) # data 的类型是 字典dict print(type(data)) # 直接打印...在json的编解码过程中,python 的原始类型与json类型会相互转换,具体的转化对照如下: Python 编码为 JSON 类型转换对应表: Python JSON dict object list...但是对于本章的数据集来说,预览理解 CSV 文件 JSON 文件要比 XML 文件容易得多。...attrib: 获取标签中的属性属性。 tail: 这个属性可以用来保存与元素相关联的附加数据。它的通常是字符串,但可能是特定于应用程序的对象。

    3.8K20

    Python数据处理(一):处理 JSON、XML、CSV 三种格式数据

    这本书主要讲了如何用 Python 处理各种类型的文件,如 JSON、XML、CSV、Excel、PDF 等。后面几章还会讲数据清洗、网页抓取、自动化规模化等使用技能。.../data.json').read() # 对json数据解码 data = json.loads(json_data) # data 的类型是 字典dict print(type(data)) # 直接打印...在json的编解码过程中,python 的原始类型与json类型会相互转换,具体的转化对照如下: Python 编码为 JSON 类型转换对应表: Python JSON dict object list...但是对于本章的数据集来说,预览理解 CSV 文件 JSON 文件要比 XML 文件容易得多。...attrib: 获取标签中的属性属性。 tail: 这个属性可以用来保存与元素相关联的附加数据。它的通常是字符串,但可能是特定于应用程序的对象。

    3.2K30

    SqlAlchemy 2.0 中文文档(三十一)

    这再次与 SQLAlchemy ORM 在创建构造函数时实际执行的操作相匹配,不应与诸如 Python dataclasses之类的验证系统的行为混淆,后者将生成一个根据注释匹配的构造函数,包括可选必需的属性...MutableList对象实现了一个列表,在修改列表内容时会向底层映射发出更改事件,包括添加或删除时。 注意MutableList不会对列表内部的本身应用可变跟踪。...MutableList 对象实现了一个列表,当列表的内容被更改时,包括添加或删除时,将向底层映射发送更改事件。 请注意,MutableList 不会对列表内部的本身应用可变跟踪。...method update(*arg: Iterable[_T]) → None 使用自身其他集合的集更新集合。 tableList 一个实现了`Mutable`的列表类型。...`MutableList` 对象实现了一个列表,当列表的内容被更改时,包括添加或删除时,将向底层映射发送更改事件。 请注意,`MutableList` 不会对列表内部的*本身*应用可变跟踪。

    27220

    对Python老司机99%有帮助的简明语法总结乱编

    或者float('string')获取对应 使用dictset 字典类型:dict = {'key' : value} 使用dict[key]直接取值会报错,方法是使用 dict.get(key),...:for key in dict遍历key。...for k, v in dict.iteritems()遍历keyvalue 列表生成器 列表生成使用range(start, end)函数 混合生成使用简写for in 迭代。...函数式编程 ---- 高阶函数 函数可以赋值给变量,可以当成参数传递给函数 map:对每个列表中得元素作用一个函数,返回。 reduce:将结果下个元素传给函数,最终返回一个结果。...str打印类时的信息 repr直接写打印出来的信息 iter用于for ... in迭代,__iter__返回下一个迭代对象,next()用于拿到循环的下一个 getitem提供下标访问 getattr

    1.3K70

    如何使用Python对嵌套结构的JSON进行遍历获取链接下载文件

    JSON(JavaScript Object Notation)是一种基于JavaScript语言的轻量级数据交换格式,它用键值对的方式来表示各种数据类型,包括字符串、数字、布尔、空、数组对象。...数组是有序的数据集合,用[]包围,元素用逗号分隔;对象是无序的数据集合,用{}包围,属性用逗号分隔,属性名属性用冒号分隔。 JSON可以形成嵌套结构,即数组或对象中包含其他数组或对象。...遍历JSON就是按顺序访问其中的每个元素或属性,并进行处理。遍历JSON有很多好处: ● 提取所需信息:我们可以从嵌套结构的JSON中获取特定信息,比如Alice喜欢什么书或Bob会不会跳舞等。...● 分析或处理信息:我们可以对嵌套结构的JSON中的特定信息进行分析或处理,比如计算AliceBob有多少共同爱好,或者按年龄排序所有人等。...下面通过一段代码演示如何遍历JSON,提取所有的网站链接,对zip文件使用爬虫代理IP下载: # 导入需要的模块 import json import requests # 定义爬虫代理加强版的用户名

    10.8K30

    python 的几种数据类型

    Perl 还有另一个函数 shift() , 可用于删除第一个元素返回其;在 Python 中,该函数相当于 a_list.pop(0) 。...内建 的 tuple() 函数接受一个列表参数,返回 一个包含同样元素的元组,而 list() 函数 接受一个元组参数返回一个列表。...将其中一个赋值给另一个将会把 v 中的每个按顺序赋值 给每一个变量。 该特性有多种用途。假设需要将某个名称指定某个特定范围的 。...而且就算在 同一字典中,所有的也无须是同一类型,您可根据需要混合 匹配。字典的键要严格得多,可以是字符串、整数其它一些 类型。在同一字典中也可混合匹配使用不同数据类型的键。...类似 列表 集合 ,len() 函数将返回字典中键的数量。 2. 而且像列表集合一样,可使用 in 运算符以测试某个特定的 键是否在字典中。

    1.5K20

    Python3 基本数据结构总结

    ‘baidu’, 2001] 列表内置函数 len(list) #列表元素个数 max(list) #返回列表元素最大 min(list) #返回列表元素最小 list(seq) #将元组转换为列表...) #在列表末尾一次性追加另一个序列中的多个(用新列表扩展原来的列表list.index(obj) #从列表中找出某个第一个匹配项的索引位置 list.insert...#移除列表中某个的第一个匹配list.reverse() #反向列表中元素 list.sort() #对原列表进行排序 list.clear()...#如果键在字典dict里返回true,否则返回false radiansdict.items() #以列表返回可遍历的(键, ) 元组数组 radiansdict.keys...key必须给出。 否则,返回default。 popitem() #随机返回删除字典中的最后一对键

    1.1K20

    JSONModel源码学习

    获取传入字典的所有key,将这些key与保存的所有属性进行匹配。如果匹配成功,则进行kvc赋值。...比如"com.app.test.name":"xxx","test_name":"xxx"这样的情况,可能对应的model数据字段名为name,那如何讲着两个进行映射,就通过key mapper来完成...先看实现: //inspects the class, get's a list of the class properties //检查类,获取类属性的列表 //它的任务是保存所有需要赋值的属性。...大概提取为: 先是获取当前class的property列表个数 然后再遍历这些property 把我们的property通过一个局部变量进行赋值–JSONModelClassProperty,这个是... //从字典里获取值赋给当前模型对象 - (BOOL)__importDictionary:(NSDictionary*)dict withKeyMapper:(JSONKeyMapper

    1.4K00

    python学习历程之----基础篇(五)

    dd list3 = ["aa", "bb", "cc", "dd"] 代码讲解:上面定义了三个列表列表的元素分别包含了两个数据类型,一个是字符串(字符),就是打引号的列表另一个是整形,也就是数字...1:3]: ", list2[1:3]) 这一句表示的是打印列表2(list2)的第二个元素到第四个元素,但是不包括第四个元素,也就是第二第三个元素, 4, 3 小结: 以上就是列表的基本用法...代码分析:创建了一个dict_list 列表, 该列表包含了三个:Beijing,Washington,London ,每个都有它对应的身份证去找到它们,当然此处的身份证有点类似列表里面的序号(0,1,2,3...),下面请看访问元素的代码示例: print("dict_list['China']: ", dict_list['China']) 此处为打印出身份证(ID)为China的(Beijing)...,因此字典的根据身份证查找(访问)元素(),其实就是一个匹配的过程,匹配到哪个的身份证就输出它对应的,因此,匹配到China的为: 通过示例,成功打印出Beijing字样。

    18430
    领券