【马士兵】Python基础--08(字典)

Python基础–08

基础知识

可变序列:目前包括字典、列表

不可变序列:目前包括整数,字符串

区别在于可变序列可以进行增、删、查、改操作,而不可变序列不可以进行

字典的组成及原理

字典是由键值对组成的,字典是无序的排列方式,他不是根据你输入键的前后顺序来存储他,而是根据键的哈希值来存储

也是由于这个原因,字典的键必须是一个不可变序列,而且键不可以重复

语法格式如此:字典名={键:值,键:值,…}

字典的实现原理

他是先由哈希函数计算键从而得到不同键的索引,然后根据键的索引排序键,键中保存的是值的地址,从而达到引用键而找到值的效果

字典特点

1.字典中键值对是一一对应的,其中,键是不可以重复的,而值是可以重复的

2.字典中的键值对是无序的

3.字典是一种用空间换时间的数据结构

4.字典的键必须是不可变对象

在这里插入图片描述

字典的创建方式

字典的创建方式总共有两种

1.通过{}创建字典

score={'tom':85,'jack':92,'sam':'pass'}
print(score)                        #输出{'tom': 85, 'jack': 92, 'sam': 'pass'}

print(type(score))                  #输出<class 'dict'>

2.通过内置函数dict()创建字典

在()里面写入键值对,与{}不同的是,这种创建方式为键=值,而不是键:值,这点需要注意

student=dict(tom=85,jack=92,sam='pass')
print(student)                      #输出{'tom': 85, 'jack': 92, 'sam': 'pass'}
print(type(student))

3.创建一个空列表

empty={}                            #输出{}
print(empty)

empty1=dict()
print(empty1)

字典元素的获取

字典元素的获取有两种方法:

在这里插入图片描述

1.使用[]获取,[]里面是键值

print(score['tom'])             #输出58

#print(score['alice'])               #如果查找不到,就会报错:KeyError: 'alice'

2.使用get()方法获取

score={'tom':58,'linda':62,'jack':98}
print(score.get('tom'))             #输出58

print(score.get('alice'))           #如果查找不到就会输出:None,这个none是可以代替的,在键后面加入替代的值,找不到就会输出替代的值

print(score.get('alice',56))        #输出56,如果查找不到就会默认输出键后面的值

字典元素的增删改操作

在这里插入图片描述

scores={'张三':100,'李四':98,'王五':105}
print('张三' in scores)
print('张三' not in scores)
 
del scores['张三']#删除指定的键值对
print(scores)
scores.clear()
print(scores)
# {'李四': 98, '王五': 105}
# {}
 
scores['陈六']=100
print(scores)
# {'陈六': 100}

获取字典视图

实际上就是获取字典里面所有的键,所有的值,以及所有的键值对

这三种东西的获取方法各有不同,虽然方法各不一样,但是操作原理,用法都是一样的

在这里插入图片描述

获取所有的键

keys()函数

score={'tom':58,'linda':62,'jack':98}

a=score.keys()
print(a)            #输出dict_keys(['tom', 'linda', 'jack'])
#可以将输出的键进行列表化,获得键的列表

print(list(a))      #输出['tom', 'linda', 'jack']

获取所有的值

values()函数

score={'tom':58,'linda':62,'jack':98}
b=score.values()
print(b)                # 输出dict_values([58, 62, 98])
print(list(b))          #输出[58, 62, 98]

获取所有的键值对

items()函数

score={'tom':58,'linda':62,'jack':98}

print(score.items())        #输出dict_items([('tom', 58), ('linda', 62), ('jack', 98)])
print(list(score.items()))          #输出[('tom', 58), ('linda', 62), ('jack', 98)]

字典元素的遍历

使用for in循环进行遍历

score={'tom':58,'linda':62,'jack':98}

for i in score:          #这里的i表示的是键,如果要获取字典的值,就需要使用[]获取或者get函数获取
    print(i,score[i],score.get(i))

字典生成式

在这里插入图片描述

实际上和列表生成式差不太多,多使用了一个内置函数zip,而且由于字典是由键值对组成的,所以需要两个可迭代对象

zip函数组成字典生成式里面,如果键的个数和值得个数不相同时,以小的为准

items=['books','fruits','papers']

prices=[98,56,233]

a={i:j for i,j in zip(items,prices)}
print(a)

prices1=[978,5,5,6451,1]            #当键和值的个数不一样的时候,以短的为准

b={m:n for m,n in zip(items,prices1)}
print(b)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科研达人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值