4.8 字典

4.8 字典

4.8.1字典简介 dict

#字典简介

       -字典属于一种新的数据结构,称为映射 mapping

       -字典的作用和列表类似,都是用来存储对象的容器

       -列表存储数据的性能很好,但是查询数据的性能很差

       -在字典中每一个元素都有一个唯一的名字,通过唯一的名字可以快速的查找到指定的元素

       -在查询元素时,字典的效率是非常快的

       在字典中可以保存多个对象,每个对象都有一个唯一的名字

              -这个唯一的名字,称为键key   通过key可以快速的查询value

              -这个对象,称为value

              -所以字典,也称为键值对结构key-value

              -每个字典中都可以有多个键值对,而每一个键值对,称其为一项item

#字典
#使用{}创建字典
d={}#创建一个空字典
print(d,type(d))

#创建一个包含有数据的字典
#语法:
#   {key:value, key:value,key:value}
#  
字典的value值可以是任意的对象
#   字典的key键可以是任意的不可变的对象 egint str bool tuple,但是一般都会使用str
#      
字典的key是不能重复的,如果出现重复的,后面的会替换到前面的
d={'name':'孙悟空','age':18,'gender':''}#
print(d)

d={
'name':'孙悟空',
  
'age':18,
  
'gender':''
  
}#
print(d)

d={
'name':'孙悟空','age':18,'gender':'','name':'sunwukong'}#
print(d)

#需要根据key获取值
d={'name':'孙悟空','age':18,'gender':''}#
print(d['name'],d['age'])
#如果使用了字典中不存的key,会报错

4.8.2字典的使用 创建 修改 添加

#创建字典
#使用{}
#
语法:{key:value,key:value}

#
使用dict()函数创建字典
#每一个参数都是一个键值对,参数名就是键,参数名就是值(此种方式创建的字典,key都是字符串)
d=dict(name=" 孙悟空",age=30,gender='')
print(d)

#也可以将一个包含有双值子序列的序列转换为字典
#双值序列,是指序列中只有两个值 eg:[1,2] ('a','3') 'ab'
#
子序列,如果序列中的元素也是序列,那么称这个元素为子序列
#eg [(1,2),(3,5)]
d=dict([('name', '孙悟空'),('age', 18)])
print(d)

#len()获取字典中键值对的个数
d=dict(name=" 孙悟空",age=30,gender='')
print(len(d))

#in 检查字典中是否包含指定的键
#not in 检查字典中是否不包含指定的键
d=dict(name=" 孙悟空",age=30,gender='')
print('name' in d)
print('hello' in d)
print('name' not in d)
print('hello' not in d)

#获取字典中的值,根绝key获取value
#
语法:d[key]
d=dict(name=" 孙悟空",age=30,gender='')
print(d['name'])

#通过[]获取值时,如果key不存在,会抛出异常keyerror
#
通过get(key[,default])该方法用来根据key获取字典中的value
#   -
如果获取的key在字典中不存在,会返回none
#   -
可以指定一个默认值,作为第二个参数,这样获取不到value时,将会返回默认值
print(d.get('name'))
print(d.get('name','默认值'))
print(d.get('hello'))
print(d.get('hello','默认值'))

#修改字典
#语法:d[key]=value 如果key存在覆盖,不存在则添加
d=dict(name=" 孙悟空",age=30,gender='')
d[
'name']='sunwukong'#修改字典中key-value
print(d)
d[
'address']='花果山'#向字典中添加 key-value
print(d)

#setdefault(key[, default])可以用来向字典中添加key-value
#   -
如果key已经存在于字典中,则返回key的值,不会对字典做任何操作
#   -如果key不存在,则向字典中添加这个key,并设置value
d=dict(name=" 孙悟空",age=30,gender='')
d.setdefault(
'name','猪八戒')
print(d)
result=d.setdefault(
'name','猪八戒')
print(result)
result=d.setdefault(
'hello','沙和尚')
print(result)
print(d)

d=
dict(name=" 孙悟空",age=30,gender='')
d.setdefault(
'address','花果山')
print(d)

#update([other])
#
将其他字典中的key-valuet添加到当前字典中
d={'a':1, 'b':2, 'c':3}
d2={
'd':4, 'e':5, 'f':6}
print(d)
print(d2)
d.update(d2)

print(d)

#如果有重复的key,则后边的会替换到当前的
d={'a':1, 'b':2, 'c':3}
d2={
'd':4, 'e':5, 'f':6,'a':7}
print(d)
print(d2)
d.update(d2)

print(d)

4.8.3字典的使用 删除 浅复制


#删除,
# #可以使用del删除字典中的key-value
#
如果删除不存的key,会抛出异常
d={'a':1, 'b':2, 'c':3}
d2={
'd':4, 'e':5, 'f':6,'a':7}
print(d)
print(d2)
d.update(d2)

print(d)

del d['a']
print(d)

#popitem()
#-
可以随机删除字典中的key-value
#-
一般都会删除最后一个key-value
#   -
删除之后,会将删除的key- value作为返回值返回
#   -返回值是一个元组,元组中有两个元素,第一个元素是删除的key,第二个删除的是value
#
当使用popitem()删除一个空字典时,会抛出异常
d.popitem()
print(d)
result=d.popitem()

print(result)

#pop(key[,default])
#
根据key删除字典中的key-value
#
会将被删除的value返回
#如果删除不存的key,会抛出异常
#   -如果制定了默认值,在删除不存在的key时,不会报错,而是直接放回默认值
d={'a':1, 'b':2, 'c':3}
d2={
'd':4, 'e':5, 'f':6,'a':7}
d.update(d2)
result=d.pop(
'c')
print(result)
print(d)

result=d.pop(
'z','默认值')
print(result)

#clear()
#
用来清空字典
d={'a':1, 'b':2, 'c':3}
d.clear()

print(d)

#copy()
#
该方法,用于字典进行浅复制
#复制之后的对象,和原对象是独立的,修改一个不会影响另一个
#注意,浅复制会简单复制对象内部的值,如果值也是一个可变对象,这个可变对象不会被复制
d={'a':1, 'b':2, 'c':3}
d2=d

print('d=',d,id(d))
print('d2=',d2,id(d2))

d2=d.copy()
d[
'a']=100
print('d=',d,id(d))
print('d2=',d2,id(d2))


d={
'a':{'name':'孙悟空','age':18}, 'b':2, 'c':3}
d2=d.copy()

print('d=',d,id(d))
print('d2=',d2,id(d2))

d={
'a':{'name':'孙悟空','age':18}, 'b':2, 'c':3}
d2=d.copy()
d2[
'a']['name']='猪八戒'
print('d=',d,id(d))
print('d2=',d2,id(d2))

4.8.4字典的遍历

#遍历字典
#keys() 该方法会返回字典的所有key
#   -
该方法会返回一个序列,序列中保存字典中所有的键
d={'name':'孙悟空','age':18,'gender':'male'}
#通过遍历keys()获取所有的键
print(d.keys())
for k in d.keys():
  
print(k,d[k])

print("-"*20)
#values()
#
该方法会返回一个序列,序列中保存字典中所有的值
d={'name':'孙悟空','age':18,'gender':'male'}
for v in d.values():
  
print(v)

print("-"*20)
#items()
#
该方法会放回字典中所有的项
#它会返回一个序列,序列中包含双值子序列
#双值分别是:字典中的keyvalue
d={'name':'孙悟空','age':18,'gender':'male'}
print(d.items())
for k,v in d.items():
  
print(k,'=',v)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值