python 字典和列表嵌套用法详解


Posted in Python onJune 29, 2021

python中字典和列表的使用,在数据处理中应该是最常用的,这两个熟练后基本可以应付大部分场景了。不过网上的基础教程只告诉你列表、字典是什么,如何使用,很少做组合说明。

刚好工作中采集prometheus监控接口并做数据处理的时候,用了很多组合场景,列出几个做一些分享。

列表(List)

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型

特点就是:可重复,类型可不同

常用方式

创建一个列表,只要把逗号分隔的不同数据项使用方括号括起来即可。如下所示:

list1 = ['apple', 'banana', 2008, 2021]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]

### 向list中增加元素
list1.append(3)   ## ['apple', 'banana', 2008, 2021, 3]

### 使用extend用来连接list
list1.extend([7, 8])  ##['apple', 'banana', 2008, 2021, 3, 7, 8]

### insert 将单个元素插入到list中
list3.insert(2, 'q')   ##['a', 'b', 'q', 'c', 'd']

### 获取列表的长度
print(len(list1))   ## 5

### 遍历list
for name in list1:
    print(name)

extend(扩展)与append(追加)的看起来类似,但实际上完全不同。

  • extend接受一个参数,这个参数总是一个list,并且把这个list中每个元素添加到原list中。
  • append接受一个参数,这个参数可以是任何数据类型,并且简单地追加到list的尾部。

字典(dictionary)

字典是另一种可变容器模型,且可存储任意类型对象。

  • 键(key)必须是唯一的,可以用数字,字符串或元组充当,而用列表就不行
  • 同一个键出现两次,最后出现的会更新前一个的值。

常用方式

字典的每个键值 key=>value 对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号 {} 中 ,格式如下所示:

>>> dict = {'a': 1, 'b': 2, 'b': '3'}
>>> print(dict)
{'a': 1, 'b': '3'}

### 访问字典里的值
>>> print(dict['b'])
3

### 更新和添加字典
>>> dict['a'] = 8
>>> dict['c'] = 'cc'
>>> print(dict['a'])
8
>>> print(dict['c'])
cc

### 删除字典元素
>>> del dict['a']
>>> print(dict)
{'b': '3', 'c': 'cc'}
>>> dict.clear()      # 清空字典所有条目
>>> del dict          # 删除字典

组合使用

列表里也能嵌套列表,列表里能嵌套字典
字典里能嵌套字典,字典里也能嵌套列表
这是非常灵活的。

列表嵌套列表

这个用得不多,相对也比较简单,直接看例子:

### 打印输出字符 5
l = [[1,2],[3,4],[[5,6],[7,8]]]	
>>> print(l[2][0][0])
5

### 将嵌套列表转为非嵌套列表
>>> a = [[1,2,3],[4,5,6],[7],[8,9]]
>>> for i in a:
...     t.extend(i)
...
>>> print(t)
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 8, 9]

列表嵌套字典

在列表中嵌套字典应该是最常用的方式了,直接举例说明:

li = [{'a': 1}, {'b': 2}, {'c': 3}]

###(1) 循环获取字典里每个键值对:
>>> for i in range(len(li)):
...     for k, v in li[i].items():
...         print(k, v)
...
a 1
b 2
c 3
    
###(2) 获取字典里每个键值对(元组数据类型):
>>> for i in range(len(li)):
...     for j in li[i].items():
...         print(j)
...
('a', 1)
('b', 2)
('c', 3)

### 可以看到第二种获取到的键值对是 元组数据类型。

字典嵌套字典

字典嵌套字典:字符串作为key,字典作为value:

>>> s={'a':{0:'no',1:{'f':{0: 'no', 1: 'maybe'}}},'b':{}}  #构造字典
>>> s['a'][0]  # 取值
'no'
>>> s['a'][1]
{'f': {0: 'no', 1: 'maybe'}}
>>> s['a'][1]['f'][1]  
'maybe'
### 字典嵌套字典
dict = {
    '192.168.1.1':{'cpu':'0.23','内存':'16','硬盘':'500'},
    '192.168.1.2':{'cpu':'3.22','内存':'64','硬盘':'700'},
    '192.168.1.3':{'cpu':'1.99','内存':'32','硬盘':'800'},
}

### for遍历
>>> for k,v in dict.items():
...     print('\n',k,end=': ')
...     for x,y in v.items():
...         print(x,y,end=' ')
...

 192.168.1.1: cpu 0.23 内存 16 硬盘 500
 192.168.1.2: cpu 3.22 内存 64 硬盘 700
 192.168.1.3: cpu 1.99 内存 32 硬盘 800

字典嵌套列表

那么如何在字典里嵌套列表呢?
字典嵌套列表:字符串作为key,列表作为value。

### 字典嵌套列表
dict = {
    '水果':['苹果','香蕉','橘子'],
    '动物':['狮子','老虎','大象'],
    '语言':['中文','英文','日语'],
}

### 访问字典里的值
>>> print(dict['水果'])
['苹果', '香蕉', '橘子']

### 访问列表里的值
>>> print(dict['语言'][1])
英文

### 循环打印输出看效果
>>> for k, v in dict.items():
...     print('\n', k, end=':')
...     for x in v:
...         print(x,end=' ')
...

 水果:苹果 香蕉 橘子
 动物:狮子 老虎 大象
 语言:中文 英文 日语

嵌套什么时候用

比如希望存储年级前100名学生的各科成绩时,由于学生是由成绩进行排名的,列表是有序的数据类型,而字典是无序的数据类型,所以外面会用列表去存储所有的数据。

而对于学生的各科成绩来说,看重的不是有序,而是需要科目和成绩一一对应,这才是最重要的。或者说当我想获取到年纪第十名同学的语文成绩,那么可以直接去获取到列表对应的索引,和字典里对应的key就可以了,这样就能得到相应的value。

至于嵌套中的排序用法

参考文献

列表:https://www.runoob.com/python/python-lists.html
字典:https://www.runoob.com/python/python-dictionary.html
嵌套字典:https://www.pythonf.cn/read/100118#1.2字典嵌套列表

到此这篇关于python 字典和列表嵌套用法的文章就介绍到这了,更多相关python 字典和列表嵌套内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python+Django在windows下的开发环境配置图解
Nov 11 Python
python 获取本机ip地址的两个方法
Feb 25 Python
详细讲解Python中的文件I/O操作
May 24 Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 Python
Python简单生成随机姓名的方法示例
Dec 27 Python
Python异常处理操作实例详解
May 10 Python
Pandas之MultiIndex对象的示例详解
Jun 25 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
python 实现视频 图像帧提取
Dec 10 Python
python实现查找所有程序的安装信息
Feb 18 Python
Python如何安装第三方模块
May 28 Python
python必学知识之文件操作(建议收藏)
May 30 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
5行Python代码实现一键批量扣图
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
python geopandas读取、创建shapefile文件的方法
总结Pyinstaller打包的高级用法
Pandas数据类型之category的用法
Jun 28 #Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 #Python
You might like
php中计算中文字符串长度、截取中文字符串的函数代码
2011/08/09 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
php生成短网址示例
2014/05/05 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
Jquery promise实现一张一张加载图片
2015/11/13 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
python实现的简单文本类游戏实例
2015/04/28 Python
Python实现telnet服务器的方法
2015/07/10 Python
Python中异常重试的解决方案详解
2017/05/05 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
详解Python字典小结
2018/10/20 Python
Python3.5运算符操作实例详解
2019/04/25 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
工程业务员工作职责
2013/12/07 职场文书
新浪微博实习心得体会
2014/01/27 职场文书
《春笋》教学反思
2014/04/15 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS