我们有时候用chrome浏览器获取Network中XHR的数据,得到的是Json类型,有时也可能是python中的字典类型,如果获取的数据比较复杂,通过简单的处理我们是无法拿到我们需要的数据的,这时我们就需要对数据进行转换处理,主要涉及到4中数据类型:str字符串,list列表,dict字典,tuple元组,或者混合类型。请参考以下案例,假设我们获取的数据是这样的(已简单处理):

class_dict = {
"total":"5",
"rows":[{"courseName":"课程1","audioname":"1.mp4","pdfFileId":"1.pdf","learnStatus":"未开始","student":"我"},{"courseName":"课程2","audioname":"2.mp4","pdfFileId":"2.pdf","learnStatus":"null","student":"我"},{"courseName":"课程3","audioname":"3.mp4","pdfFileId":"3.pdf","learnStatus":"已开始","student":"我"},{"courseName":"课程4","audioname":"4.mp4","pdfFileId":"4.pdf","learnStatus":"未开始","student":"我"},{"courseName":"课程5","audioname":"5.mp4","pdfFileId":"5.pdf","learnStatus":"已开始","student":"我"}]
}

我现在想要获取到courseName,audioname,pdfFileId,learnStatus的值,并存入到EXCEL中的4列。
我们的思路是,先将这个原始数据转换成一个二维列表[['课程1', '1.mp4', '1.pdf', '未开始'], ['课程2', '2.mp4', '2.pdf', 'null'],...]
然后将二维列表的值循环存入到EXCEL文件中。

解决这个问题前,我们先介绍一下字典的一些基础知识:

一、字典类型与json类型的区别

1.python dict 字符串可以用单引号或者双引号,json强制规定双引号。
2.python {“me”: “我”} 是合法的,json必须是 {“me”: “\u6211”} 
3.字典类型与json可以相互转换,字典转换为json:dict_json = json.dumps(dict),
  json转换为字典类型:json_dict = json.loads(json)
  
二、遍历字典的键值,得到各种数据类型

def deal_dict():class_json = json.dumps(class_dict)print("class_json为str类型:", type(class_json), class_json)print("class_dict为字典类型:", type(class_dict))# 1.遍历字典key值,value值:一般为字符串,如果字典为复杂情况,比如上面class_dict,第二个key的value为复杂情况# 这个时候会出现字符串,列表等类型for key in class_dict:print("遍历字典key+value值1:", key, class_dict[key])print("这里的键值为多种数据类型1::", type(class_dict[key]))for key in class_dict.keys():print("遍历字典key+value值2:", key, class_dict[key])for value in class_dict:print("遍历字典key+value值3:", value, class_dict[value])for key, value in class_dict.items():print("遍历字典key+value值4:", key, value)print("这里的键值为多种数据类型2:", type(value))for (key, value) in class_dict.items():print("遍历字典key+value值5:", key, value)print("这里的键值为多种数据类型3:", type(value))print(class_dict.items())print("class_dict.items()为字典_列表类型:", type(class_dict.items()))if __name__ == '__main__':deal_dict()

三、遍历字典项,得到的是元组类型

# 2.遍历字典项,得到的是元组类型for item in class_dict.items():print("遍历字典项:", item)print("这里的item为元组类型:", type(item))

四、创建一个函数得到二维列表:

def dict_to_list():class_list = []                                               #1.创建一个空的二维列表for key, value in class_dict.items():print("value的数据类型:",type(value),value)               #2.获取字典类型数据的value(dict-->str,list)for item1 in value:if isinstance(value, (list)):                         #3.过滤value中非列表类型的数据(str,list-->list)print("数据类型为字典:", type(item1), item1)       #4.获取列表中的字典数据(list-->dict)rows = []                                         #5.创建一个空的列表存放数据for info in item1:if info == 'courseName'or info == 'audioname' or info == 'pdfFileId' or info == 'learnStatus':rows.append(item1[info])                  #6.获取字典类型数据的value存入到一维列表(dict-->str-->list)if rows:                                          # 如果列表不为空class_list.append(rows)                       # 二维列表存入数据return class_listif __name__ == '__main__':#deal_dict()print(dict_to_list())

这个方法的思路是遍历字典的键值然后再处理数据:dict-->list-->dict-->str-->list
还有一种方法是遍历字典项生成元组,再处理数据:dict-->tuple-->list-->dict-->str-->list

def dict_to_list2():class_list = []                                               #1.创建一个空的二维列表for item in class_dict.items():                               #2.获取字典类型数据的字典项(dict-->tuple)a = item[1]                                               #3.获取元组的数据集合(tuple-->str,list)print("item[1]的数据类型:", type(a), a)                   #4.查看元组的数据的类型for list in a:                                            #5.分别获取元组的数据(str-->str,list-->dict)rows=[]for info in list:if info == 'courseName'or info == 'audioname' or info == 'pdfFileId' or info == 'learnStatus':rows.append(list[info])                  #6.获取字典类型数据的value存入到一维列表(dict-->str-->list)if rows:                                          # 如果列表不为空class_list.append(rows)                       # 二维列表存入数据return(class_list)if __name__ == '__main__':#deal_dict()#print(dict_to_list())print(dict_to_list2())

到这里算是得到了我们想要的数据,但是如果要存入到Excel文件,那还需要处理,下篇文章将介绍一下如何对Excel操作。

【Python】字典dict类型转换为列表list类型相关推荐

  1. python字典(dict)+常用方法操作+列表、元组、集合、字典的互相转换

    python字典(dict)+常用方法操作+列表.元组.集合.字典的互相转换 字典也是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据. 为了保存具有映射关系的数据,Python ...

  2. Python 字典(dict) clear() 方法

    字典(dict)是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据.Python字典可存储任意类型对象,如字符串.数字.元组等,优点是取值方便,速度快.本文主要介绍Python ...

  3. Python 字典 dict() 函数

    描述 Python 字典 dict() 函数用于创建一个新的字典,用法与 Pyhon 字典 update() 方法相似. 语法 dict() 函数函数语法: dict(key/value) 参数说明: ...

  4. C语言 有符号类型转换为无符号类型

    C语言中变量的类型变换比较多,有些地方需要时刻注意,不然很可能写出带有bug的代码并深埋入系统,难以察觉. 例如 有符号类型和无符号类型运算,有符号类型转换为无符号类型. 需要注意的有两种情况: 1. ...

  5. python字典转二维列表,列表再转回字典

    python字典转二维列表,列表再转回字典 字典转为 2 维 列表 a = {'a': 'jun'} c = [[k,v] for k,v in a.items()] [['a', 'jun']] 2 ...

  6. byte数组转blob类型_Blob类型转换为byte数组类型

    Blob类型转换成byte数组类型存储到Oracle数据库 import java.io.BufferedInputStream; import java.io.IOException; import ...

  7. Python字典dict

    字典是许多数据的集合,属于可变序列类型,它是无序的可变序列,其保存的内容是以"键值对"的形式存放的. Python 中,字典的数据类型为 dict,通过 type() 函数即可查看 ...

  8. Python 字典dict详解(超详细)

    文章目录 Python内置函数/方法详解-字典dict 1.创建字典 1.1 字典键的特性 2.访问字典值 2.1 直接访问 2.2 for循环遍历 2.3 检查键是否存在 2.4 嵌套字典 3.内置 ...

  9. [Python]字典dict简介

    文章目录 字典dict 字典操作 字典遍历 遍历key 遍历value 同时遍历key与value 操作函数 内置函数 内置方法 字典是一种可变容器,可存储任意类型的键值对. 字典dict pytho ...

最新文章

  1. 接入层的流程和非接入层
  2. Gartner 2015新兴技术发展周期简评:大数据实用化、机器学习崛起
  3. android系统自动构建,[系统集成] Android 自动构建系统
  4. 实例32:python
  5. Iterator主要有三个方法:hasNext()、next()、remove()详解
  6. 《前沿视点》——2013年最值得关注的网页设计流行趋势
  7. Android5.1--电源管理之省电模式分析
  8. 写弹窗时防止底层滚动
  9. bzoj2631:tree
  10. 关于s19赛季服务器维修,王者荣耀S19赛季版本更新问题及解决办法一览
  11. 软件项目管理流程总结
  12. VTD场景搭建指南-搭建一个最简单的场景
  13. java刷题--69x的平方根
  14. CAj格式文件打开方法
  15. 无法绑定由多个部分组成的标识符 yvi312082007@163.com。
  16. 徐家骏:我在华为工作十年的感悟
  17. xmm1是什么器件_模拟电子技术multisim仿真1二极管特性仿真.ppt
  18. Zimbra禁止接收带有加密的文件邮件 提醒病毒(Heuristics.Encrypted.PDF)
  19. SpringBoot整合RabbitMq实战(一)
  20. Facebook变现方式详解

热门文章

  1. iperf测试带宽linux,iperf3-网络带宽性能测试工具
  2. js 里面令人头疼的 this
  3. 学习android 画板源代码,Android实现画画板案例
  4. 如何用计算机计算胸围,文胸尺码计算器
  5. ios跨线程通知_一种基于Metal、Vulkan多线程渲染能力的渲染架构
  6. Java Lambda 表达式讲解
  7. Linux 实操———CentOS 6 安装配置 Tomcat
  8. 英特尔nuc能代替主机吗_python编程,热度为什么越来越高,python能代替JAVA吗?...
  9. div背景透明_为什么css3实现background-image和半透明边框这么麻烦
  10. java 对象视图框架_Stripes视图框架Java对象属性验证和prototype.js Ajax的测试