Python学习笔记 12

字典

本节内容有:

  • 字典创建 dict() 长度 len()
  • 查询 d[key] , get(key[, default])
  • 修改and添加 d[key]=value , setdefault(key[,default]) , update( [other] )
  • 删除 del( key ) , popitem( ) , pop(key[,default]) , clear( ) 清空列表
  • 浅复制 copy()
  • 遍历字典 keys() , values() , items()
# 字典(dict)
#   字典和列表类似,但查询更方便
#   字典中每个对象都有一个唯一的名字,称之为键k  ey,相当于列表中的下标
#   每一个key-value称之为键值对,为一项item
#   {'key':value} key可以是任意不可变对象(str,int,bool,tuple...),一般用str
#                       value可以是任意对象

d = {'name':'张三' , 'age':34 }
print(d,type(d))

# 字典中有相同的key时,后面的会覆盖前面的
d = {'name':'张三' , 'age':34 ,'name':'李四'}
print(d)


# 创建字典
# 使用dict( )创建字典
# 键key必须是字符串str
a = dict(name='小李',age=18)

# dict( )也可以将一个包含 双值 子序列 的序列转化为字典
t = [ ('name','小王') , ['age','20'] , 'ad' ]
b = dict( t )
print(b)

# len( ) 获取字典中key-value的个数
print('字典 t 中key-value的个数为:',len(t))

# in,not in检查字典中是否包含指定的键,返回bool值
print('hello' is t)



# d[key]查询值
d = {'name':'张三' , 'age':34 }
print(d['age'])
# print( d['gender']) 如果查询字典中不存在的key会报错 

# get(key[, default] ) 查询键key的值
# 在没有默认值时,如果key不存在返回None
# 在有默认值时,如果key不存在返回默认值,即参数default
print( d.get('hello') )
print( d.get('hello','小明'))

# 修改字典
#   d[key]=value key
#   存在则覆盖对应的value,不存在则添加对应key-value对
d['name']='Levine'
d['gender']='男'
print(d)



#   setdefault(key[,default]) 向字典中添加key-value
#   如果key存在则返回key对应的value值
#   如果key不存在则向字典中添加key-value对
d = {'name':'张三' , 'age':34 }
result = d.setdefault('name','李华')
print(result , d)
result = d.setdefault('hello','李华')
print(result , d)

# update( [other] )
# 将其他字典中的key-value添加到当前字典中,如果有重复的key,则覆盖当前字典
d1 = {'a':1,'b':2}
d2 = {'c':3,'d':4,'a':5}
d1.update(d2)
print(d1)

# del( key ) 删除key对应的key-value,key不存在时报错
del d1['b']
print(d1)

# popitem( ) 
# 随机删除字典中的一个键值对(一般是最后一个)
# 返回值是删除的键值对,返回值类型是tuple
# 对空字典使用时会报错
d = {'a':1,'b':2,'c':3,'d':4}
result = d.popitem( )
print(result,d)

# pop(key[,default])
# 根据key删除字典中的key-value,返回值是删除的value
# 如果key不存在,在没有默认值时报错,有默认值时返回默认值
d = {'a':1,'b':2,'c':3,'d':4}
result = d.pop('c')
print(result,d)
result = d.pop('f','没有')
print(result,d)

# clear( ) 清空列表
d.clear( )

# copy( )
# 该方法对字典进行浅复制
# 浅复制之后的对象和原对象相互独立,互不影响
# 注意:浅复制只会复制对象内部的值,如果对象是一个可变对象,这个对象不会被复制,会指向这个对象id
d = {'a':1,'b':2,'c':3,'d':4}
a = d# 直接复制
a['a']=7
print(d,id(d))
print(a,id(a))

d = {'a':1,'b':2,'c':3,'d':4}
a = d.copy( )# 浅复制
a['a']=7
print(d,id(d))
print(a,id(a))

d = {'a':1,'b':{'i':60,'j':80},'c':3,'d':4}
a = d.copy( )# 浅复制
a['b']['j'] = 7
print(d,id(d))# d也随之改变
print(a,id(a))

# 遍历字典
# keys( ) 返回字典所有的key
# 返回值是一个序列
d = {'a':25,'b':'ti','c':23}

for i in d.keys( ) :
    print(i,d[i])
print( )

# values( ) 返回字典所有的values
# 返回值是一个序列
for j in d.values( ) :
    print(j)
print( )

# items( ) 返回字典所有的key-values对
# 返回值是一个序列,之中包含有双值子序列(两列的二维数组)
print(d.items( ))
for k,v in d.items( ) :# 中间包含有元组的解包
    print(k,v)

猜你喜欢

转载自blog.csdn.net/weixin_44011689/article/details/89313761
今日推荐