美文网首页Linux运维进阶-Python,Docker,Shell
python通过key值获取复杂字典中目标数据

python通过key值获取复杂字典中目标数据

作者: My熊猫眼 | 来源:发表于2020-08-12 11:46 被阅读0次

本文非原创,转载自 无限遍历,Python实现在多维嵌套字典、列表、元组的JSON中获取数据

具体思路如下:

新建两个函数A和B,函数 A处理字典数据,被调用后,判断传递的参数,如果参数为字典,则调用自身;
如果是列表或者元组,则调用列表处理函数B;
函数 B处理列表,被调用后,判断传递的参数,如果参数为列表或者元组,则调用自身;
如果是字典,则调用字典处理函数A;

# coding:utf-8 
""" 
@author:Bingo.he 
@file: get_target_value.py 
@time: 2017/12/22 
"""
def get_target_value(key, dic, tmp_list):
    """
    :param key: 目标key值
    :param dic: JSON数据
    :param tmp_list: 用于存储获取的数据
    :return: list
    """
    if not isinstance(dic, dict) or not isinstance(tmp_list, list):  # 对传入数据进行格式校验
        return 'argv[1] not an dict or argv[-1] not an list '
 
    if key in dic.keys():
        tmp_list.append(dic[key])  # 传入数据存在则存入tmp_list
    else:
        for value in dic.values():  # 传入数据不符合则对其value值进行遍历
            if isinstance(value, dict):
                get_target_value(key, value, tmp_list)  # 传入数据的value值是字典,则直接调用自身
            elif isinstance(value, (list, tuple)):
                _get_value(key, value, tmp_list)  # 传入数据的value值是列表或者元组,则调用_get_value
    return tmp_list

def _get_value(key, val, tmp_list):
    for val_ in val:
        if isinstance(val_, dict):  
            get_target_value(key, val_, tmp_list)  # 传入数据的value值是字典,则调用get_target_value
        elif isinstance(val_, (list, tuple)):
            _get_value(key, val_, tmp_list)   # 传入数据的value值是列表或者元组,则调用自身

使用举例:

test_dic = {'a': '1', 'b': '2', 'c': {'d': [{'e': [{'f': [{'v': [{'g': '6'}, [{'g': '7'}, [{'g': 8}]]]}, 'm']}]}, 'h', {'g': [10, 12]}]}}
get_target_value("g",test_dict, r_tmp)      
#r_tmp 为一个空列表,用于保存得到的结果。
#test_dict 是一个字典类型, 也就是查找的范围.
#“g” 是要找的key 的值;

本文非原创,转载自 无限遍历,Python实现在多维嵌套字典、列表、元组的JSON中获取数据

相关文章

  • python通过key值获取复杂字典中目标数据

    本文非原创,转载自 无限遍历,Python实现在多维嵌套字典、列表、元组的JSON中获取数据 具体思路如下: 新建...

  • NSDictionary和NSMutableDictionary

    NSDictionary不可变字典 字典中的数据都是无序的; 初始化 字面量 获取所有Key 获取所有值 NSMu...

  • Python的基本数据类型--Dictionary

    字典是一组无序的集合,由key和vlaue组成,通过key映射你想要存储或者获取的内容, Python中的字典就像...

  • Swift字典,数组,元组优缺点

    字典 优点: 通过key值进行索引,查找效率高 通过key值进行数据标注,可读性高,易于区分多种数据 key值唯一...

  • Python字典get()方法

    Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。 key ...

  • [iOS 开发基础]- 字典转模型和KVC

    需求一:将字典转换成自己需的对象,对象的属性是字典的key值,直接使用key值获取数据存在两个缺点,一是key值难...

  • Go语言字典

    什么是字典 Go语言字典和数组一样,是来保存一组相同的数据类型的 Go语言字典可以通过key值来获取数据 格式:v...

  • 映射Map抽象数据类型及python实现

    python中的数据类型字典可以保存key-value键值对的数据类型,根据关键字key可以查询关联的数据值dat...

  • Day8-元组,字典和集合

    一、认识类型 二、增删改查 注意: 字典的查询: a.字典[key] ---> 获取key对应的值(key值必须...

  • 字典取值

    python中常用的数据类型是字典,字典的取值就是通过当前对象然后加上对于的key值就得到了对应的value; x...

网友评论

    本文标题:python通过key值获取复杂字典中目标数据

    本文链接:https://www.haomeiwen.com/subject/ommzihtx.html