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。

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

---- 钢铁 648403020@qq.com 06.28.2021

参考文献

列表: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 字典和列表嵌套用法的更多相关文章

  1. python关于字典嵌套字典,列表嵌套字典根据值进行排序

    python 对于字典嵌套字典, 列表嵌套字典排序 例:列表嵌套自字典:d = [{"name": '张三', 's': 68}, {'name': '李四', 's': 97}] ...

  2. Python中关于列表嵌套列表的处理

    在处理列表的时候我们经常会遇到列表中嵌套列表的结构,如果我们要把所有元素放入一个新列表,或者要计算所有元素的个数的话应该怎么做呢? 第一个例子 对于上图中的这样一组数据,如果我们要知道这个CSV文件中 ...

  3. Python彩蛋、字典、列表高级用法、元类、混入、迭代器、生成器、生成式、git

    一.类与类的关系 关注公众号"轻松学编程"了解更多. is-a 继承 继承是指一个类(称为子类.子接口)继承另外一个类(称为父类.父接口)的功能, 并可以增加它自己的新功能的能力. ...

  4. python 字典,列表,集合,字符串,基础进阶

    python列表基础 首先当然是要说基础啦 列表list 1.L.append(object) -> None 在列表末尾添加单个元素,任何类型都可以,包括列表或元组等 2.L.extend(i ...

  5. Python 字典和列表的对比应用

    Q:将下列格式的txt文件,打印出该选手的3个最快跑步时间 james2.txt =>“James Lee,2002-3-14,2-34,3:21,2.34,2.45,3.01,2:01,2:0 ...

  6. python 字典、列表、字符串 之间的转换

    1.列表与字符串转换 1)列表转字符串: 将列表中的内容拼接成一个字符串 将列表中的值转成字符串 2)字符串转列表: 用eval转换 将字符串每个字符转成列表中的值 将字符串按分割成列表 2.列表与字 ...

  7. python字典和列表的高级应用

    1.将序列分解为单独的变量 1.1问题 包含n个元素的元组或列表.字符串.文件.迭代器.生成器,将它分解为n个变量 1.2方案 直接通过赋值操作 要求:变量个数要等于元素个数 当执行分解操作时,有时需 ...

  8. python字典和列表使用

    一.字典中健值为列表或字典 1 a.setdefault(key,[]).append(b)--键值是列表 2 a.setdefault(key,{}).append(b)--键值是字典 二.键值为列 ...

  9. python字典推导&&列表推导&&输出随机数

    字典推导: x = ['A', 'B', 'C', 'D'] y = ['Alice', 'Bob', 'Cecil', 'David'] print({i:j for i,j in zip(x,y) ...

随机推荐

  1. 逆向工程初步160个crackme-------7

    这两天有点发烧,被这个疫情搞得人心惶惶的.我们这里是小镇平常过年的时候人来人往的,今年就显得格外的冷清.这是老天帮让在家学习啊,破解完这个crackme明天就去接着看我的加密解密,算了算没几天就开学了 ...

  2. [linux] Git基本概念&操作

    1.基本概念 版本控制系统:一种软体工程技巧,籍以在开发的过程中,确保由不同人所编写的同一项目代码都得到更新.并追踪.记录整个开发过程. 集中式(SVN)/ 分布式(GIT)版本控制系统:SVN的版本 ...

  3. [Java] javaEE

    定义 面向企业级应用中一些通用模块制定的标准 避免重复开发,解决代码可靠性问题 13种规范 JDBC(JavaDatabase Connectivity):数据库连接 以统一方式访问数据库的API J ...

  4. CentOS 7配置静态IP地址的两种方法 来自:互联网

    CentOS 7配置静态IP地址的两种方法 来自:互联网 时间:2021-01-12 阅读:4 如果你想要为CentOS 7中的某个网络接口设置静态IP地址,有几种不同的方法,这取决于你是否想要使用网 ...

  5. Job for ssh.service failed because the control process exited with error code. See "systemctl status ssh.service" and "journalctl -xe" for details.

    1.按照提示 systemctl status ssh.service 查看报错原因 sshd -t 2.结果 /etc/ssh/sshd_config line 34: missing argume ...

  6. Linux 用户管理_用户相关配置文件详解

    linux的用户管理 linux支持多个用户同时使用同一个用户登陆系统,windows在修改组策略的情况下,也可以多个人使用同一个用户登陆. 远程连接Linux的方式:ssh 远程连接windows的 ...

  7. 6.3-4 zip、unzip

    zip:打包和压缩文件     zip压缩格式是Windows与Linux等多平台通用的压缩格式.和gzip命令相比,zip命令压缩文件不仅不会删除源文件,而且还可以压缩目录.   zip命令的参数选 ...

  8. Java并发:ThreadLocal的简单介绍

    作者:汤圆 个人博客:javalover.cc 前言 前面在线程的安全性中介绍过全局变量(成员变量)和局部变量(方法或代码块内的变量),前者在多线程中是不安全的,需要加锁等机制来确保安全,后者是线程安 ...

  9. 统信UOS - 扩展系统盘

    一.开root权限,开终端 二.执行lsblk指令,查看磁盘情况 可以发现 / 路径 对应的是loop0,查阅可知loop设备就是一个文件,挂载为一个路径操作的,这就尴尬了,好好的分区不用,你干嘛这么 ...

  10. java学习之旅2——set

    var set = Collections.synchronizedSet(new HashSet<Integer>()); 可以这样来获得一个同步的集合. 对于HashSet, for循 ...