字典
一、字典的性质
1.字典是可变的容器型数据类型。(增删改)
2.Python3.6之前字典是无序的容器型数据类型;
Python3.6之后字典是有序的容器型数据类型(虽然字典是有序的,但是没有下标)**
3.字典中的元素是以键值对(Key:value)形式存在的。
字典中的键必须是不可变的数据类型,键是解释说明的作用。
字典中的值是可以任意数据,值是最终想要的数据。
字典以{}作为容器符号,元素使用逗号分隔,数据类型dict
二、字典不支持拼接、重复等操作
三、成员运算:字典的成员运算是判断某个键在或者不在字典中
四、循环遍历
for i in stu4:
print ( i)
除非有特殊说明,否则对字典做的操作都是针对于键的操作。
五、字典中的相关方法
dict1 = { 'name' : '张三' , 'qq' : '100001' , 'tel' : '10086' }
1.keys:获取字典中所有的键,返回一个容器
print ( dict1. keys( ) )
for i in dict1. keys( ) :
print ( i)
运行结果:dict_keys( [ 'name' , 'qq' , 'tel' ] )
name
qq
tel
2.values:获取字典中所有的值,返回一个容器
print ( dict1. values( ) )
for i in dict1. values( ) :
print ( i)
运行结果:dict_values( [ '张三' , '100001' , '10086' ] )
张三
100001
10086
3.items:获取字典中所有的键值对,返回一个容器
print ( dict1. items( ) )
for i in dict1. items( ) :
print ( i)
运行结果:dict_items( [ ( 'name' , '张三' ) , ( 'qq' , '100001' ) , ( 'tel' , '10086' ) ] )
( 'name' , '张三' )
( 'qq' , '100001' )
( 'tel' , '10086' )
for keys, values in dict1. items( ) :
print ( f' { keys} ---> { values} ' )
运行结果:name - - - > 张三
qq - - - > 100001
tel - - - > 10086
4.sum、max、min、sorted、len等方法,都可以用作字典,但是操作对象都是字典中的键(keys)
5.dict():将指定数据转化为字典
a.数据本身是容器
b.容器中的元素还必须是一个容器
c.容器中的容器必须只有两个元素
d.这两个元素的第一个元素必须是不可变数据类型
list1 = [ [ 1 , 2 ] , ( 'name' , '张三' ) , 'ab' ]
print ( dict ( list1) )
运行结果:{ 1 : 2 , 'name' : '张三' , 'a' : 'b' }
六、字典的增删改查
dict1 = { }
print ( dict1, type ( dict1) )
运行结果:{ } < class 'dict' >
1.字典中添加元素
一、直接添加:如果字典中不存在某个键,那么直接添加能将这个键值对添加进去
dict1[ 'name' ] = '张三'
print ( dict1)
运行结果:{ 'name' : '张三' }
二、setdefault:向字典中添加键值对,如果这个键已经存在,不做修改;如果不存在,就添加到字典中
dict1. setdefault( 'name' , '李四' )
dict1. setdefault( 'age' , 66 )
print ( dict1)
运行结果:{ 'name' : '张三' , 'age' : 66 }
三、update - 更新字典中的元素
a.传入一个字典
dict1. update( { 'address' : '地球村' , 'sex' : '男' } )
print ( dict1)
运行结果:{ 'name' : '张三' , 'age' : 66 , 'address' : '地球村' , 'sex' : '男' }
b.传入关键字,可以在update方法中传入key=value
dict1. update( english= 66 )
print ( dict1)
运行结果:{ 'name' : '张三' , 'age' : 66 , 'address' : '地球村' , 'sex' : '男' , 'english' : 66 }
c.传入一个包含一个或者多个二元组的列表
dict1. update( [ ( 'math' , 0 ) , ( 'chinese' , 100 ) ] )
print ( dict1)
运行结果:{ 'name' : '张三' , 'age' : 66 , 'address' : '地球村' , 'sex' : '男' , 'english' : 66 , 'math' : 0 , 'chinese' : 100 }
四、字典中元素的查找:通过键获取值(确保键是存在的)
print ( dict1[ 'name' ] )
运行结果:张三
五、字典的修改,如果字典中已经存在某个键,这种写法是修改这个键对应的值
dict1[ 'name' ] = '法外狂徒张三'
print ( dict1)
运行结果:{ 'name' : '法外狂徒张三' , 'age' : 66 , 'address' : '地球村' , 'sex' : '男' , 'english' : 66 , 'math' : 0 , 'chinese' : 100 }
六、使用update修改对应的值,确保这个键是存在的,否则是向字典中添加元素
dict1. update( { 'age' : 10 } )
print ( dict1)
运行结果:{ 'name' : '法外狂徒张三' , 'age' : 10 , 'address' : '地球村' , 'sex' : '男' , 'english' : 66 , 'math' : 0 , 'chinese' : 100 }
七、删除操作
a.del 字典[‘键’]:删除字典中指定键对应的键值对(如果键不存在,报错)
del dict1[ 'sex' ]
print ( dict1)
运行结果:{ 'name' : '法外狂徒张三' , 'age' : 10 , 'address' : '地球村' , 'english' : 66 , 'math' : 0 , 'chinese' : 100 }
b.字典.pop(键):从字典中删除指定的键值对,返回删除的key对应的值
result = dict1. pop( 'english' )
print ( result)
print ( dict1)
运行结果:66
{ 'name' : '法外狂徒张三' , 'age' : 10 , 'address' : '地球村' , 'math' : 0 , 'chinese' : 100 }
c.clear:清空字典
八、推导式
不仅仅列表有推导式,元组、集合、字典也有。
从列表推导式,换个容器符号就是元组、集合推导式写法。
字典推导式不仅需要换容器符号,还需要换添加元素的表达式,需要构造成key:value的形式。
例如:九九乘法表
dict2 = { f' { i} * { j} ' : i * j for i in range ( 1 , 10 ) for j in range ( 1 , i + 1 ) }
print ( dict2)