字典是python中的一种数据结构,称为映射,字典的作用和列表类似,都是用来存储对象的容器,列表存储数据的性能很好,但是查询数据的性能很差,字典中每一个元素都有一个唯一的名字,通过这个唯一的名字可以快速的查找到指定的元素,在查询元素的时候,字典的效率是非常快的。字典中的每个对象都有一个唯一的名字,这个名字被称为key,通过key可以快速的查询value,这个对象称为value。
新建一个空字典
dic= dict ( )
dic= { }
字典的值可以是任意对象,字典的键是任意的不可变对象且不能重复。
创建新的字典–使用dict()函数来创建,每一个参数都是一个键值对,参数名就是键,参数值就是值
d= dict ( name= '孙悟空' ,age= 18 , gender= '男' )
print ( d)
创建新的字典–将一个包含有双值子序列的序列转换为字典
d= dict ( [ ( 'name' , 'wang' ) , ( 'age' , 18 ) ] )
print ( d)
len()获取字典中键值对的个数
d= dict ( [ ( 'name' , 'wang' ) , ( 'age' , 18 ) ] )
print ( len ( d) )
获取字典里的值
d= { 'name' : 'wang' }
print ( d[ 'name' ] )
获取字典中不存在的键
d= { 'name' : 'wang' }
print ( d[ 'sex' ] )
get()获取字典中的值
d= { 'name' : 'wang' }
print ( 1 ,d. get( 'name' ) )
print ( 2 ,d. get( 'age' ) )
print ( 3 ,d. get( 'age' , '获取不到值时返回默认值' ) )
1 wang
2 None
3 获取不到值时返回默认值
修改字典 d[key]=value ,如果key不存在就新增key和value,如果存在就修改key的value
d= { 'name' : 'wang' }
d[ 'name' ] = 'william'
print ( 1 , d)
d[ 'age' ] = 18
print ( 2 , d)
1 { 'name' : 'william' }
2 { 'name' : 'william' , 'age' : 18 }
setdefault(key[,default])可以用来向字典中添加key-value,如果key已经存在于字典中,则返回key的值,不会对字典做任何操作,如果key不存在,则在字典中添加这个key ,并设置value
d= { 'name' : 'william' }
result= d. setdefault( 'age' , 18 )
print ( 1 , result)
result2= d. setdefault( 'name' , 'wang' )
print ( 2 , result2)
1 18
2 william
updata()方法:将其他的字典中的key-value添加到当前字典中,⚠️如果其他的字典中存在相同的key,会将原字典中的key对应的value更新
a= { 'name' : 'will' }
b= { 'age' : '18' }
a. update( b)
print ( a)
del 删除字典中的key-value
d= { 'name' : 'wang' , 'age' : 18 , 'gender' : 'male' }
del d[ 'name' ]
popitem()删除随机删除字典中的一个键值对,一般都会删除最后一个键值对
d= { 'name' : 'wang' , 'age' : 18 , 'gender' : 'male' }
d. popitem( )
pop() 根据key删除字典中的key-value,会将被删除的value返回,如果删除不存在的key会抛出异常,如果使用pop()指定了默认值,再删除不存在的key时,不会报错,而是直接返回默认值。
d= { 'name' : 'wang' , 'age' : 18 , 'gender' : 'male' }
result= d. pop( 'name' )
result2= d. pop( 'address' , '这是默认值' )
print ( 1 ,result)
print ( 2 , result2)
'''
1 wang
2 这是默认值
'''
clear()清空字典
d= { 'name' : 'wang' , 'age' : 18 , 'gender' : 'male' }
d. clear( )
copy() 用于字典的浅复制,复制以后的对象和原对象是独立的,修改一个不会影响另一个
但是⚠️:浅复制只会简单复制对象内部的值,如果值也是一个可变对象,这个可变对象不会被复制
d= { 'a' : { 'name' : 'wang' , 'age' : 20 } , 'age' : 18 , 'gender' : 'male' }
d2= d. copy( )
print ( id ( d) )
print ( id ( d2) )
'''
140214646828320
140214646837408
'''
d2[ 'a' ] [ 'name' ] = 'william'
print ( d)
{ 'a' : { 'name' : 'william' , 'age' : 20 } , 'age' : 18 , 'gender' : 'male' }
遍历字典keys(),values(),items()
d= { 'name' : 'wang' , 'age' : 18 , 'gender' : 'male' }
print ( d. keys( ) )
for key in d. keys:
print ( key)
print ( d. values( ) )
for value in d. values:
print ( value)
print ( d. items( ) )
for key, value in d. items( ) :
print ( key, value)