百木园-与人分享,
就是让自己快乐。

python 字典和列表嵌套用法

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 字典嵌套列表

来源:https://www.cnblogs.com/jiba/p/14945833.html
图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » python 字典和列表嵌套用法

相关推荐

  • 暂无文章