Python 第五章 字典

本文介绍了Python中的字典数据结构,它是一种键值对映射,提供高效的查询方式。字典可以通过键来快速访问值,支持多种创建和操作方法,如get、update、pop等。此外,还讨论了字典的遍历、复制、删除以及浅复制的特点。
摘要由CSDN通过智能技术生成

字典<class'dict'>是一种新的数据结构,称为映射mapping

作用和列表类似,都是用来存储对象的容器。但是列表查询数据性能很差,字典查询数据效率高

字典可以保存多个对象,每个对象都有唯一一个名字,称为键key,这个对象称为值value

所以字典是键值对结构,key-value。通过key可以快速查询value。

语法:z={key:value,key:value,key:value}

value可以是任意类型,str,number,list........

而key只能是不可变对象,int,str,bool,tuple...。一般为str,并且key不能重复!若出现key重复,则后面出现的值会替换前面的值。

d={} 空子典
d={'name':'孙悟空','age':18,'gender':'男'}

一、获取值的方法:

1、字典名[key]  ,key是字符串,要加引号

print(d['name'])
或
n='name'
print(d[n])

2.通过方法获取值。get(key【,defauly】)

1、要查找的键在字典中时
print(d.get('name'))
2、要查找的键不在字典中时
print(d.get('hello')) 结果是None
3、也可以指定一个默认值来作为第二个参数,这样 获取不到值时就会返回默认值
print(d.get('hello','默认值'))  结果就是默认值

二、创建字典的方法:

1.用语法格式创建 ,如上代码

2.通过dict()函数来创建。

d=dict(name='孙悟空',age=18,gender='男')
这种方式创建的字典,key都是字符串。每一个参数都是一个键值对。如上代码有三个参数。

3.可将一个包含有双值子序列的序列转为字典。就是序列中的元素也是子序列,且这个子序列只有两个值,所以称之为双值子序列。如 [ (1,2),(3,5) ]

d=dict( [ ('name','孙悟空') , ('age',18) ] )
其中‘name’为key,'孙悟空'是value

三、字典的长度

len()函数获取key-value的个数,即字典的长度。

四、检查字典中是否包含指定的键

in 和 not in  返回值是bool类型

print('name' in d)检查字典d中是否有键‘name’
True

五、修改字典 

1、往字典中添加key-value,d[key]=‘value’   d是字典名

d[address]='花果山'字典中没有则会自动加上

2、通过方法。setdefault(key【,default】)添加

d.setdefault('name','猪')
若key已经在字典中,则会返回key值,不会对字典有任何操作。
若key不在字典中,则会向字典添加这个key,并设置value。

3.通过方法。upgdate([other])将其他字典中的key-value添加至此字典中。

d.update(d2)
d2是其他字典,若d2中有d的重复key,则后面加入的会替换当前value.

六、删除

1、del d[key]

删除不存在的key会报错!

del d['name']

2、通过方法。popitem()随即删除一个key-value,一般就是删除最后一个。返回值就是删除的key-value,但是是以元组的形式来返回,此元组中有两个元素,一个是key,一个是value。

删除空子典会报错!

d.popitem()

3、通过方法。pop(key【,default】)根据key来删除字典中的key-value,会将被删除的value返回。

删除不存在的key会报错!

result=d.pop('z','默认值')
如果指定了默认值,则删除不存在的key时,不会报错,而是直接返回默认值

4、通过方法清空字典clear()

d.clear()

七、通过copy()方法对字典浅复制

d={'a':1,'b':2,'c':3}
d2=d
这种不算复制!!!
d['b']=10
因为是指向同一对象,修改其中一个会影响另一个。


d2=d.copy()
这种复制以后的对象和原对象是独立的,修改一个此时不会影响另一个。

注意:
d={'a':{'name':'sunwukong','age':18},'b':2,'c':3}
d2=d.copy()
d2['a']['name']='猪八戒' 
此时d和d2都会变
浅复制会复制对象内部的值,若值也是一个可变对象,那么这个可变对象不会被复制。

八、遍历字典,取出所有key-value

1、keys()该方法会返回字典中所有key,该方法返回值是一个序列,该序列中保存有字典的所有的

d={'name':'孙悟空','age':18,'gender':'男'}
print(d.keys())
结果:
dict_keys(['name', 'age', 'gender'])

通过for循环来遍历keys()获取所有的键
for k in d.keys():
    print(k)
结果:
name
age
gender

2、values(),该方法返回值是一个序列,该序列中保存有字典的所有的

for v in d.values():
    print(v)
缺点就是只能看到value值,看不到key

3、items()该方法会返回字典的所有的项。

返回值是一个序列,该序列中包含有双值子序列。

双值分别是,字典中的key和value。

d={'name':'孙悟空','age':18,'gender':'男'}
print(d.items())
结果:
dict_items([('name', '孙悟空'), ('age', 18), ('gender', '男')])里面是元组tuple


通过循环来遍历!每一次返回的是一个元组,然后对元组进行解包。
for k,v in d.items():
    print(k,'=',v)
结果:
name = 孙悟空
age = 18
gender = 男

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不会是小张吧!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值