python多级字典_Python多层字典取值

#! /usr/bin/python

# 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值是列表或者元组,则调用自身

不好意思,这篇文章也是抄的

正所谓抄袭一时爽,一直抄一直爽,哈哈哈

讲究一个资源共享,知识共享,知识不是用来卖钱的,是用来传承的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSerialPort类定义的消息

CSerialPort类定义的消息 消息名称消息号功能说明WM_COMM_BREAK_DETECTEDWM_USER1检测到输入中断WM_COMM_CTS_DETECTEDWM_USER2检测到CTS(清除发送)信号状态改变WM_COMM_DSR_DETECTEDWM_USER3检测到DSR(数据设置准备就绪)信号状态…

【转】Windows Server2008 R2下安装Oracle 10g

因开发环境需要,在Windows Server 2008 R2 Enterprise64位系统上安装Oracle 10g。去Oracle 官方网站下载了Oracle Database 10g Release 2 (10.2.0.4) for Microsoft Windows Vista x64, Microsoft Windows Server 2008 R2 x64, Windows 7 x64。 可刚执行安装&am…

移植libmxml到(arm-linux)

官方网站 http://www.minixml.org/ 下载源码:mxml-2.6.tar.gz 解压缩: tar -zxvf mxml-2.6.tar 进入目录mxml-2.6后配置属性 ./configure --enable-shared --hostarm-linux make 编译后会出现一个小错误。不用理会,因为目前编译是在A…

mysqlworkbench导入sql文件_将sql脚本文件导入数据库

一、用cmd的调试环境导入.sql文件中的数据:WinR键打开cmd输入:MySQL -u root -p 输入密码:*******进入MySQL后MySQL>show databases; --查看所有数据库MySQL>create database mydatabase; --创建数据库 MySQL>use mydata…

linux创建目录的语句,Linux的 文件 和 目录 管理(基本语句)

包括了文件和目录的创建、删除、修改,权限、压缩、搜索、分区、挂载简单的一些命令:【 pwd 】查看当前所在目录【 cd .. 】上级目录【 cd ~ 】当前用户的家目录【cd -】上次打开目录(回看)【 rmdir 目录名】删除空目录【du -sh 文件或目录】查看文件或目…

win8开发中需要用到一些系统版本之类的统计信息,总结如下。

1.获取软件的版本号,这个比较简单: Package package Package.Current; PackageId packageId package.Id; PackageVersion version packageId.Version; string version String.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build…

sql怎么读_大白话讲解脏写、脏读、不可重复读和幻读

一般对于我们的业务系统去访问数据库而言,它往往是多个线程并发执行多个事务的,对于数据库而言,它会有多个事务同时执行,可能这多个事务还会同时更新和查询同一条数据,所以这里会有一些问题需要数据库来解决我们来看看…

Linux显示txt文件,如何在Linux中显示文本文件中的某些行?

sed -n 10000000,10000020p filename你可能能够加快这一点:sed -n 10000000,10000020p; 10000021q filename在这些命令中,选项-n使sed“抑制模式空间的自动打印”. p命令“print [s]当前模式空间”和q命令“立即退出[s] sed脚本而不再处理任何输入……”引号来自sed…

Android上试用Linphone(Free SIP VOIP Client)

1. 下载Linphone apk并且安装到两个Android手机上http://www.linphone.org/eng/download/packages/android.html2. 申请两个免费的SIP帐号进行测试https://www.ekiga.net/3. 在每个Android手机上分别配置Linphone应用程序点击Settings菜单, 在SIP Account界面分别配置如下:User…

greensock包使用

greensock包使用 官网: http://www.greensock.com/tweenlite/ 新的遮罩类:BlitMask类 http://www.snorkl.tv/2011/10/use-blitmasks-wrap-feature-for-easy-bitmap-scrolling-and-looping/ 转载于:https://www.cnblogs.com/tinytiny/archive/2013/01/10/…

esp8266 micropython oled_micropython(4):使用ESP8266 控制 oled 屏幕,并显示 helloworld 字符...

目录前言1,关于esp 8266 和 oled2,使用lib库驱动 1306 4pin led3,总结前言相关micropython 全部分类:https://blog.csdn.net/freewebsys/category_9670462.html本文的原文连接是:https://blog.csdn.net/freewebsys/article/detail…

linphone-android移植

一:到网站上下载linphone-android的源码: http://www.linphone.org/eng/download/git.html linphone-android对应的git地址是: 在虚拟机中敲入如下命令 git clone git://git.linphone.org/linphone-android.git --recursive 记住一定要把rescursive给带上&…

debian 升级linux内核,Debian8升级内核到4.5

本文讲述如何升级Debian8的内核到4.5版本0x01:去linux kernel官网https://www.kernel.org/下载4.5的内核,选择tar.xz格式0x02:想办法把下载好的包弄进你的虚拟机或...直接你的物理机0x03:解压有的朋友可能没见过tar.xz格式的包&am…

jQuery.validate.js API

名称 返回类型 描述 validate(options) 返回:Validator 验证所选的 FORM valid() …

一个小公司老板的日常管理

1. 小公司如何留住骨干: 2.关于授权 3.有的钱不能省 5.关于招聘 6.老板尽量唱红脸 7.公司里的亲戚 8.当老板和开车 9.按时发工资 10.学会说“不” 11.不要在公司内部奢望交朋友 12.避免当场做决定 13.政策的制定 14.矬子里拔将军 15.有些事情越透明越好 16.发劳保用…

软件安全测试报告模板_软件测试工程师经典面试题

软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux操作系统的使用、软件…

linux怎么删除exe文件夹,ubuntu linux 批量删除文件

sudo sucd /find / -name "*google-music*" -exec rm -rf "{}" \; 注:分号是必需的find [目录名] -name "文件名" -exec rm -rf "{}" \;搜索删除文件,例如:find / -name *.raw -exec rm -rf &…

OD使用教程20 - 调试篇20

OD使用教程20 - 调试篇20 让编程改变世界 Change the world by program 名词注释:Keygen为Key Generator的缩写,就是我们一般所说的注册机。是软件注册生成所需的注册码或序列号的程序。 keygen可以独立做一个可执行程序存在,也可以作为程序…

堡垒机 请确认是否安装oracle客户端_OracleOracle数据库的安装(超详细)

一、Oracle的安装对于新手来说安装Oracle这样的数据库,第一次还是会有些陌生的,我自己在安装的过程中也是遇到的很多的坑。(自己装了5遍 /(ㄒoㄒ)/~~ )由于我自己安装的是11g这个版本,所以下面以11g的下载安装为例1.下载Oracle数据库是有免费…

linux编译器项目,编译器架构 LLVM

LLVM 是 Low Level Virtual Machine (低级虚拟机)的简称,这个库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。LLVM的项目是一个模块化和可重复使用的编译器和工具技…