python3字典:获取json响应值来进行断言的用法详解

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

对字典的操作如下:

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

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

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

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

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

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

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

1 dict =  {‘code‘: ‘200‘, ‘message‘: ‘‘, ‘redirect‘: ‘‘, ‘value‘: {‘name‘: ‘嗯嗯‘, ‘title‘: ‘36‘, ‘value‘: ‘123‘}}
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‘: ‘200‘, ‘message‘: ‘‘, ‘redirect‘: ‘‘, ‘value‘: [{‘supplier‘: ‘xyz‘, ‘title‘: ‘我们在这里‘}]}
2 print(type(dict[‘value‘]))
输出结果:
<class ‘list‘>

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

1 dict = {‘code‘: ‘200‘, ‘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‘: ‘200‘, ‘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‘: ‘36‘, ‘value‘: ‘123‘}
?遍历字典的键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‘: ‘36‘, ‘value‘: ‘123‘}
     ?遍历字典的项,item()方法把字典中每对key和value组成一个元组,并把这些元组放在列表中返回
1 #遍历字典的项,item()方法把字典中每对key和value组成一个元组,并把这些元组放在列表中返回
2 for item in dict.items():
3     print(item)
4
5 输出结果:
6 (‘code‘, ‘200‘)
7 (‘message‘, ‘‘)
8 (‘redirect‘, ‘‘)
9 (‘value‘, {‘name‘: ‘嗯嗯‘, ‘title‘: ‘36‘, ‘value‘: ‘123‘})

  ?基本操作

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‘: ‘200‘, ‘message‘: ‘ok‘, ‘redirect‘: ‘‘, ‘value‘: {‘name‘: ‘嗯嗯‘, ‘title‘: ‘36‘, ‘value‘: ‘123‘}}
19 {‘code‘: ‘200‘, ‘message‘: ‘ok‘, ‘redirect‘: ‘‘, ‘value‘: {‘name‘: ‘嗯嗯‘, ‘title‘: ‘36‘, ‘value‘: ‘123‘}, ‘wo‘: ‘apple‘}
20 {‘message‘: ‘ok‘, ‘redirect‘: ‘‘, ‘value‘: {‘name‘: ‘嗯嗯‘, ‘title‘: ‘36‘, ‘value‘: ‘123‘}, ‘wo‘: ‘apple‘}
21 {}
22 <class ‘dict‘>

原文地址:https://www.cnblogs.com/insane-Mr-Li/p/9144518.html

时间: 2024-09-28 20:21:01

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

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

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

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

json简介 1.概念:json全称是javaScript object Notation,是一种并轻量级的数据交换格式. 2.特点: 1.本质就是具有特定格式的字符串 2.json完全独立于编程语言 3.json比xml数据传输的有效性要高出很多 Android系统也原生的提供了JSON解析的API,但是它的速度很慢,而且没有提供简介方便的接口来提高开发者的效率和降低出错的可能.因此,通常情况下,我们都会选择其他优秀的JSON解析实现,用以替代系统的API,目前JSON解析的开源实现主要包括一

7、str字符串、int整数、list列表、dict字典、set集合、tuple元祖功能详解

1 ######################################## str 字符串 及类中的各种技能########################################## 2 3 # 1. capitalize 字符串首字母大写 4 # 自身不变,会生成一个新的值 5 # name = 'deasion' # str类的对象 6 # v = name.capitalize() # 自动找到name关联的str类,执行其中的capitalize技能 7 # prin

Python3正则匹配re.split,re.finditer及re.findall函数用法详解

这篇文章主要介绍了Python3正则匹配re.split,re.finditer及re.findall函数用法,结合实例形式详细分析了正则匹配re.split,re.finditer及re.findall函数的概念.参数.用法及操作注意事项,需要的朋友可以参考下 本文实例讲述了Python3正则匹配re.split,re.finditer及re.findall函数用法.分享给大家供大家参考,具体如下: re.split re.finditer re.findall @(python3) 官方 r

下拉插件 (带搜索) Bootstrap-select 从后台获取数据填充到select的 option中 用法详解

今天收到了客户的需求,要求在新增停车场ID的时候要从数据库查出来对应的停车场名称然后显示在界面上.保存的时候按照停车场ID进行保存. 自己首先把后台的部分写完了,测试了接口数据.成功的拿到了ajax数据. 接下来,自己用了select下拉标签和js函数进行填充后台传过来的数据. 经过自己的不断百度和参考别人的博客,试了很多次终于成功的调试出了想要的结果. 特来博客记录一下,也分享一下开心的心情. (一)首先引入样式和JS文件 样式文件和JS下载放到本地最好,因为放到本地自己可以修改一些东西. 在

分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)(转)

转载地址:http://www.cnblogs.com/linJie1930906722/p/6036053.html partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,分区函数一般与排名函数一起使用. 准备测试数据: create table Student --学生成绩表 ( id int, --主键 Grad

Python3中正则模块re.compile、re.match及re.search函数用法详解

Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表示 raw string 原生字符,意在声明字符串中间的特殊字符不用转义. 比如表示 ‘\n',可以写 r'\n',或者不适用原生字符 ‘\n'. 推荐使用 re.match re.compile() 函数 编译正则表达式模式,返回一个对象.可以把常用的正则表达式编译成正则表达式对象,方便后续调用及

Python3中真真假假True、False、None等含义详解

概述 在Python中,不仅仅和类C一样的真假类似,比如1代表真,0代表假.Python中的真假有着更加广阔的含义范围,Python会把所有的空数据结构视为假,比如[](空列表).{}(空集合).''(空字符串)等,而与之相反的非空数据结构即为真 简单对比代码: # 遍历列表中的示例元素,获取对应的真假: for elenment in ['', 'S', [], [1, 2], {}, {3, 'SSS'}, 0, 0.0, 1, None]: if elenment: print(elenm

Android Volley获取json格式的数据

为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和json对象数组等.当然,java本身也有获取json对象的方法,然而为了更好地适应移动互联网,google专门为其做了特殊的优化,因而应该尽可能地使用Volley库. Volley官方文档:https://developer.android.com/training/volley/index.htm