在Python中我们做接口经常用到一些json的返回值我们常把他转化为字典,在前面的python数据类型详解(全面)中已经谈到对字典的的一些操作,今天我们就获取json返回值之后,然后转化为字典后的获取和其他的一些常用操作。

对字典的操作如下:

  ♦获取第一层字典中的数据:

1 dict = {'code': '', 'message': '', 'redirect': '', 'value': {'name': '嗯嗯', 'title': '', 'value': ''}}
2 print(dict['code'])
结果输出:
200

  ♦获取第二层字典中的数据:如果我们要获取value的值,查看发现value后的数据也是一个字典

1 dict = {'code': '', 'message': '', 'redirect': '', 'value': {'name': '嗯嗯', 'title': '', 'value': ''}}
2 print(dict['value'])
3 print(dict['value']['name'])
输出结果:
{'name': '嗯嗯', 'title': '', 'value': ''}
嗯嗯

  ♦也可以通过dict.get()来获取键对应的值

1 dict =  {'code': '', 'message': '', 'redirect': '', 'value': {'name': '嗯嗯', 'title': '', 'value': ''}}
2 print(dict.get('code'))
3 print(dict.get('value').get('name'))
输出结果:
200
嗯嗯

  ♦dict.get()和dict['key']都可以用来获取键对应值,但是存在些许区别

1 dict =  {'code': '', 'message': '', 'redirect': '', 'value': {'name': '嗯嗯', 'title': '', 'value': ''}}
2 print(dict.get('wo'))
3 print(dict['wo'])

  输出结果:

1 None # print(dict.get('wo'))
2 Traceback (most recent call last): 3 File "C:/Users/zy/Documents/GitHub/python3/searchTest/test.py", line 3, in <module> 
  print(dict['wo'])
KeyError: 'wo'#print(dict['wo'])

原因:dict['key']只能获取存在的值,如果不存在则触发KeyError;dict.get(key, default=None),返回指定键的值,如果值不在字典中返回默认值None

字典的值是一个list

  ♦dict = {'code': '200', 'message': '', 'redirect': '', 'value': [{'supplier': 'xyz', 'title': '我们在这里'}]}

我们发现value的数据和1中的情况不同,可以获取value的值判断是什么类型的数据

1 dict = {'code': '', 'message': '', 'redirect': '', 'value': [{'supplier': 'xyz', 'title': '我们在这里'}]}
2 print(type(dict['value']))
输出结果:
<class 'list'>

  根据列表特性 索引来获取list[0]查看数据,发现列表中的每个元素是字典,又可以根据字典的特性获取到supplier的值

1 dict = {'code': '', 'message': '', 'redirect': '', 'value': [{'supplier': 'xyz', 'title': '我们在这里'}]}
2 print(dict['value'][0])
3 print(type(dict['value'][0]))
输出结果:
{'supplier': 'xyz', 'title': '我们在这里'}
<class 'dict'>
1 dict = {'code': '', 'message': '', 'redirect': '', 'value': [{'supplier': 'xyz', 'title': '我们在这里'}]}
2 print(dict['value'][0]['supplier'])
输出结果:
xyz

字典基本操作

  ♦遍历字典

1 # 遍历字典
2 for key in dict:
3 print(key + ':' + str(dict[key]))
4
5 输出结果:
6 code:200
7 message:
8 redirect:
9 value:{'name': '嗯嗯', 'title': '', 'value': ''}
♦遍历字典的键key
1 #遍历字典的键key
2 for key in dict.keys():
3 print(key)
4
5 输出结果:
6 code
7 message
8 redirect
9 value

  ♦遍历字典的值value

1 #遍历字典的值value
2 for value in dict.values():
3 print(value)
4
5 输出结果:
6 200
7
8
9 {'name': '嗯嗯', 'title': '', 'value': ''}
     ♦遍历字典的项,item()方法把字典中每对key和value组成一个元组,并把这些元组放在列表中返回
1 #遍历字典的项,item()方法把字典中每对key和value组成一个元组,并把这些元组放在列表中返回
2 for item in dict.items():
3 print(item)
4
5 输出结果:
6 ('code', '')
7 ('message', '')
8 ('redirect', '')
9 ('value', {'name': '嗯嗯', 'title': '', 'value': ''})

  ♦基本操作

1 #修改键值
2 dict['message'] = 'ok'
3 print(dict)
4 #增加新的键/值
5 dict['wo'] = 'apple'
6 print(dict)
7 #输出键是'code'的条目
8 del dict['code']
9 print(dict)
10 #清空字典所有条目
11 dict.clear()
12 print(dict)
13 #删除字典
14 del dict
15 print(dict)
16
17 输出结果:
18 {'code': '', 'message': 'ok', 'redirect': '', 'value': {'name': '嗯嗯', 'title': '', 'value': ''}}
19 {'code': '', 'message': 'ok', 'redirect': '', 'value': {'name': '嗯嗯', 'title': '', 'value': ''}, 'wo': 'apple'}
20 {'message': 'ok', 'redirect': '', 'value': {'name': '嗯嗯', 'title': '', 'value': ''}, 'wo': 'apple'}
21 {}
22 <class 'dict'>

转自:python3:jsonpath-rw处理Json对象,写的不错哦

python3字典:获取json响应值来进行断言的用法详解的更多相关文章

  1. 循环(数组循环、获取json数据循环)、each()循环详解

    return; // 退出循环(不满足,退出此次循环.下次满足条件,依然会走此循环)return false; //退出函数(退出所有) 一. 数组循环: html: <div class=&q ...

  2. python3字典:获取json响应值来进行断言

    前言:在接口自动化测试中,最后都是需要将返回结果进行断言.本文按照实际情况举例说明字典各种操作,以及如何提取响应数据来进行断言 1.dict = {'code': '200', 'message': ...

  3. C++通过jsoncpp类库读写JSON文件-json用法详解

    介绍: JSON 是常用的数据的一种格式,各个语言或多或少都会用的JSON格式. JSON是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择. ...

  4. JSON详解+ C# String.Format格式说明+ C# ListView用法详解 很完整

    JSON详解 C# String.Format格式说明 C# ListView用法详解 很完整

  5. python接口自动化(二十四)--unittest断言——中(详解)

    简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言.这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京 ...

  6. Jmeter(二十一) - 从入门到精通 - JMeter断言 - 上篇(详解教程)

    1.简介 最近由于宏哥在搭建自己的个人博客可能更新的有点慢.断言组件用来对服务器的响应数据做验证,常用的断言是响应断言,其支持正则表达式.虽然我们的通过响应断言能够完成绝大多数的结果验证工作,但是JM ...

  7. 浅谈Android项目----JSON解析(4种解析技术详解)

    json简介 1.概念:json全称是javaScript object Notation,是一种并轻量级的数据交换格式. 2.特点: 1.本质就是具有特定格式的字符串 2.json完全独立于编程语言 ...

  8. Javascript获取图片原始宽度和高度的方法详解

    前言 网上关于利用Javascript获取图片原始宽度和高度的方法有很多,本文将再次给大家谈谈这个问题,或许会对一些人能有所帮助. 方法详解 页面中的img元素,想要获取它的原始尺寸,以宽度为例,可能 ...

  9. 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发

    每天记录一点:NetCore获得配置文件 appsettings.json   用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...

随机推荐

  1. Pollard Rho因子分解算法

    有一类问题,要求我们将一个正整数x,分解为两个非平凡因子(平凡因子为1与x)的乘积x=ab. 显然我们需要先检测x是否为素数(如果是素数将无解),可以使用Miller-Rabin算法来进行测试. Po ...

  2. android应用程序monkey压力测试(模拟器或真机)

    首先需要安装一个模拟器: 前置条件: 1.jdk环境配置 2.eclipse下载安装(直接解压即可) 3.网站上下载ADT: 由于国内禁止google的浏览,所以需要自己上网找资源,下面这个网站有比较 ...

  3. POJ1458 最长公共子序列

    描述: 给定两个字符串,求其最长公共子序列(不用连续), 输入: abc bcc programning content 输出: 2 2 解法: 动态规划. 定义dp[i][j]表示s1到i索引,以及 ...

  4. Java核心技术-集合

    在实现方法时,选择不同的数据结构会导致其实现风格以及性能存在着很大的差异,例如: 需要快速地搜索成千上万个有序的数据项吗?需要快速地在有序的序列中插入和删除元素吗?需要建立键与值之间的关联吗? 1 J ...

  5. static变量和static函数

    在C语言编程中,static的一个作用是信息屏蔽! 比方说,你自己定义了一个文件 -- 该文件中有一系列的函数以及变量的声明和定义! 你希望该文件中的一些函数和变量只能被该文件中的函数使用,那么,你可 ...

  6. oracle 分页其实一个子查询就好了,没理解的自然只能见样学样

    .首先rownum是一个查询缓存级别的东西,所以以下写法是错误的 ; 因为rn其实不是student表的内容,看做一个缓存编号就好 但是有些人不服了,加个a.rn<= ;结果还是不行,这下相信了 ...

  7. 图灵社区 书单推荐:成为Java顶尖程序员 ,看这11本书就够了

    java书单推荐 转自 http://www.ituring.com.cn/article/211418 “学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两 ...

  8. CentOS 7下面配置静态IP

    CentOS 7.0系统是一个很新的版本哦,很多朋友都不知道CentOS 7.0系统是怎么去安装配置的哦,因为centos7.0与以前版本是有很大的改进哦. 说明:截止目前CentOS 7.x最新版本 ...

  9. (简单的物理题)Bungee Jumping

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1155 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  10. CodeForces - 589F —(二分+贪心)

    A gourmet came into the banquet hall, where the cooks suggested n dishes for guests. The gourmet kno ...