字典

一、什么是字典

1、python内置的数据结构之一,与列表一样是一个可变序列

2、以键值对的方式存储数据,字典是一个无序的序列

 

 

 3、字典示意图

4、字典的实现原理

  • 字典的实现原理与查字典类似,查字典是先根据部首或拼音查找对应的页码,python中的字典是根据key值查找value所在的位置

二、字典的创建

1、最常用的方式:使用花括号

2、使用内置函数dict()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#第一种字典的创建方法
scores={'小秦同学在上学':90,'梅达':97,'柳阳':98}
print(scores)
print(type(scores))
 
#第二种字典的创建方法
student=dict(name='Jack',age=20)
print(student)
print(type(student))
 
#空字典的创建
d={}
print(d)
print(type(d))
 
运算结果:
 
{'小秦同学在上学': 90, '梅达': 97, '柳阳': 98}
<class 'dict'>
{'name': 'Jack', 'age': 20}
<class 'dict'>
{}
<class 'dict'>

三、字典元素的获取

1、字典中元素的获取——[]和get()方法

2、[]取值和get()方法的区别

  • 在[]中,如果key不存在,则会报错,抛出keyError异常
  • get()方法取值,如果字典中不存在指定的key值,不会报错而是返回None,可以通过设置默认的value,以便指定的key不存在时返回
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
score={'秦健峰':100,'梅达':50,'刘阳':80}
print(score)
 
print(score['刘阳'])
#print(score['meida'])   #没有该key值,报错KeyError: 'meida'
 
print(score.get('秦健峰'))
print(score.get('全家福'))#返回None
 
print(score.get('全家福',99))  #如果’全家福‘不存在,则返回设置的默认值
 
运算结果:
 
{'秦健峰': 100, '梅达': 50, '刘阳': 80}
80
100
None
99

四、字典常用操作

  1. key的判断-看其是否存在
  2. 删除key-value对
  3. 新增元素
  4. 修改元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
score={'秦健峰':100,'梅达':50,'刘阳':80}
print(score)
 
#判断key是否存在
print('qjf' in score)
print('qjf' not in score)
 
print('梅达' in score)
print(score['梅达'])
 
#删除指定的key-value对
#del score['qjf']  #没有该key,则会报错
del score['梅达']
print(score)
 
#清空key-value对
#score.clear()
#print(score)
 
#增加新的元素
score['qjf']=99
print(score)
 
#修改元素
score['qjf']=100
print(score)
 
运算结果:
 
{'秦健峰': 100, '梅达': 50, '刘阳': 80}
False
True
True
50
{'秦健峰': 100, '刘阳': 80}
{'秦健峰': 100, '刘阳': 80, 'qjf': 99}
{'秦健峰': 100, '刘阳': 80, 'qjf': 100}
 
Process finished with exit code 0

五、获取字典视图

  • 获取字典中所有key——key()
  • 获取字典中所有value——values()
  • 获取字典中所有key-value对——items()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#获取所有的key
score={'秦健峰':100,'梅达':50,'刘阳':80}
keys=score.keys()
print(keys)
print(type(keys))
#将dict_keys转变为列表
keys=list(keys)
print(keys)  #['秦健峰', '梅达', '刘阳']
 
#获取所有的value值
values=score.values()
print(values)
print(type(values))
#将dict_values转变为列表
values=list(values)
print(values,type(values)) #[100, 50, 80]
 
#获取key-value对的值
items=score.items()
print(items)
print(type(items))
#将dict_items转变为列表
items=list(items)
print(items)   #[('秦健峰', 100), ('梅达', 50), ('刘阳', 80)] 引入元组概念
 
运行结果:
 
dict_keys(['秦健峰', '梅达', '刘阳'])
<class 'dict_keys'>
['秦健峰', '梅达', '刘阳']
dict_values([100, 50, 80])
<class 'dict_values'>
[100, 50, 80] <class 'list'>
dict_items([('秦健峰', 100), ('梅达', 50), ('刘阳', 80)])
<class 'dict_items'>
[('秦健峰', 100), ('梅达', 50), ('刘阳', 80)]
 
Process finished with exit code 0

六、字典元素的遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
score={'秦健峰':100,'梅达':50,'刘阳':80}
#字典元素的遍历
 
#for循环遍历取得到的是key
for i in score:
    print(i)
<br>#查看key对应的value
for i in score:
    print(i,score[i],score.get(i))
 
运算结果:
 
秦健峰
梅达
刘阳
秦健峰 100 100
梅达 50 50
刘阳 80 80

七、字典的特点

  • 字典中所有元素都是一个key-value对,key不允许重复,value可以重复
  • 字典中的元素是无序的
  • 字典中的key必须是不可变对象
  • 字典也可以根据需要动态伸缩
  • 字典会浪费较大的内存,是一种使用空间换时间的数据结构

八、字典生成式——也就是生成字典

使用内置函数zip():用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表

1
2
3
4
5
6
7
8
9
items=['Fruits','Books','Others']
prices=[96,78,85]
 
d={item:price for item,price in zip(items,prices)}#{'Fruits': 96, 'Books': 78, 'Others': 85}
print(d)
 
#使用upper()可以将字符全部变为大写
d={item.upper():price for item,price in zip(items,prices)}#{'FRUITS': 96, 'BOOKS': 78, 'OTHERS': 85}
print(d)

  

posted @   小秦同学在上学  阅读(69)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示