Python学习记录5字典

字典

用{}来定义字典。
字典是Python中的内置数据结构之一,与列表一样是可变序列。
以键值对的方式存储序列,字典是一个无序的序列。
在这里插入图片描述
列表是有序的,第一个放在列表里的元素就在列表的第一个位置,第二个放在列表里的元素就在列表里第二个位置上,每个元素的是单个的。
字典是无序的,第一个放在字典里的元素不一定在第一个位置上,而且字典元素是一对,键:值。

字典示意图:
在这里插入图片描述
字典是通过hash(key)函数计算元素所在的位置,所以在字典中的键是不可变序列。
实现原理,同key键查找value值得位置。

字典的创建原理
使用{},a={‘张三’:12,‘李四’:51}
或用内置函数dict(n=55,c=88,k=‘三四’)

b={'n':1,'m':3}
print(b)

a=dict(n=55,c=88)
print(a)

字典中元素的获取
使用[],在[]里是键。
用get(),例 字典.get()。

区别:
若用[],字典中不存在指定的key则抛出keyError异常。
get()方法取值,若字典中不存在指定key,并不会抛出keyError异常,而是返回None,可以通过参数设置默认的value,以便指定key不存在时返回。

B={'张三':100,'jack':666,'66':'王'}
print(B['66'])
#print(B['gg'])key不存在会报错

print(B.get('jack'))
print(B.get('gg'))#key不存在,输出None不会报错
print(B.get('gg',9999))#我们还可以自行设置一个默认输出值,key不存在时输出

key的判断
in ,指定的key在字典里返回True。
not in指定的key不在字典里返回True。

B={'张三':100,'jack':666,'66':'王'}
print('jack' in B)#True
print('jack' not in B)#False

字典的增删改

B={'张三':100,'jack':666,'66':'王'}
del B['jack']#删除了key-value,键值对的删除
print(B)
B.clear()#把字典里的元素全部清空了
print(B)

B['钱']=100#新增了一个键值对
print(B)

B['钱']=60#修改了键对应的值
print(B)

获取字典视图的三个方法
keys()获取字典里所有的键。
values()获取字典里所有的值。
items()获取字典里所有的键值对。

B={'张三':100,'jack':666,'66':'王'}
a=B.keys()#获取字典里所有键
print(a)
print(list(a))#把获取的键转化成列表

b=B.values()#获取了字典所有的值
print(b)

i=B.items()#获取字典里的键值对,元组
print(i)
print(list(i))#转化成列表后,有三个元素,每个元素是一个元组

字典元素的遍历
依次对字典里的元素进行获取。
for i in B:
print(i)

B={'张三':100,'jack':666,'66':'王'}
for i in B:
    print(i)#把字典里的的键依次获取
    print(i,B[i],B.get(i))#这就是依次获取键和值

字典的特点
1.字典里所有元素都是key-value一对的形式,key键不可以重复,但值value可以重复。
2.字典里的元素是无序得到。
3.字典里的键key必须是不可变对象。
4.字典也可以更具需要,动态的伸缩。
5.字典会浪费较大的内存,是一种使用空间换时间的结构。

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

a=['books','cars','house']
b=[100,200,300]
c={a.upper():b for a,b in zip(a,b)}#.upper()是让字母都大写
print(c)

若元素数量不匹配,b中元素多于a中的元,则在zip()打包过程中以元素少的进行匹配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

永不过时的小优雅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值