佛性SEO

 找回密码
立即注册
查看: 1275|回复: 0

python 字典和列表嵌套用法

[复制链接]

349

主题

349

帖子

152

积分

积分
152
发表于 2021-6-29 23:08:22 | 显示全部楼层 |阅读模式

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

刚好工作中采集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用来连接listlist1.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### 遍历listfor 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          # 删除字典组合使用

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

列表嵌套列表

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

### 打印输出字符 5l = [[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.items():...         print(k, v)...a 1b 2c 3    ###(2) 获取字典里每个键值对(元组数据类型):>>> for i in range(len(li)):...     for j in li.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。

至于嵌套中的排序用法,我们下一篇接着说。


www.sobd.cc
www.jcdi.cn
www.somanba.cn
www.zuowenge.cn
www.bdsoba.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

  • 外链吧 | 雨住水巷 | 五金修配网 | 免费优化 | 全能百科 | 万能社区 | 链接购买
  • 在线咨询

  • 外链吧正规seo交流2群

    QQ|手机版|小黑屋|佛性SEO |网站地图|网站地图

    GMT+8, 2024-11-24 00:19 , Processed in 0.068485 second(s), 22 queries .

    快速回复 返回顶部 返回列表