1、字典 dict 概念介绍及初始化
1.1 概念介绍
key-value 键值对的数据的集合
可变的、无序的、并且 key 不重复
1.2 初始化
1 、 d = dict ( )
2 、 d = {
}
3 、dict ( ** kwargs) 使用 name = value 对初始化一个字典
4 、dict ( iterable, ** kwargs) 使用可迭代对象和 name = value 对构造字典
不过可迭代对象的元素必须是一个二元结构
5 、dict ( mapping, ** kwargs) 使用一个字典构造另外一个字典
6 、类方法 dict . fromkeys( iterable, value)
d1 = dict . fromkeys( range ( 5 ) )
d2 = dict . fromkeys( range ( 5 ) , 5 )
d3 = {
'a' : 10 , 'b' : 20 , 'c' : None , 'd' : [ 1 , 2 , 3 ] , 'e' : ( '1' , 'a' ) }
d4 = dict ( a= 10 , b= 20 , c= 30 )
d5 = dict ( ( ( 1 , 'a' ) , ( 2 , 'b' ) ) )
for i in [ d1, d2, d3, d4, d5] :
print ( i, type ( i) )
{
0 : None , 1 : None , 2 : None , 3 : None , 4 : None } < class 'dict' >
{
0 : 5 , 1 : 5 , 2 : 5 , 3 : 5 , 4 : 5 } < class 'dict' >
{
'a' : 10 , 'b' : 20 , 'c' : None , 'd' : [ 1 , 2 , 3 ] , 'e' : ( '1' , 'a' ) } < class 'dict' >
{
'a' : 10 , 'b' : 20 , 'c' : 30 } < class 'dict' >
{
1 : 'a' , 2 : 'b' } < class 'dict' >
1.2.1 初始化注意事项
dict 输入的参数必须是一个可迭代对象,且元素必须是一个二元结构
dict1 = dict ( [ ( 1 , 2 ) , ( 'a' , 10 ) , ( 'c' , 100 , 200 ) ] )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ValueError Traceback ( most recent call last)
< ipython- input - 1 - c69bd69f2aa3> in < module>
- - - - > 1 dict1 = dict ( [ ( 1 , 2 ) , ( 'a' , 10 ) , ( 'c' , 100 , 200 ) ] )
ValueError: dictionary update sequence element
使用 set 作为可迭代参数时,一定要注意,因为 set 是无序的
dict2 = dict ( ( [ 1 , 2 ] , [ 'a' , [ 100 ] ] , ( 'abc' , 100 ) , {
'dfg' , 'qwe' } ) )
print ( dict2)
{
1 : 2 , 'a' : [ 100 ] , 'abc' : 100 , 'qwe' : 'dfg' }
1.3 字典 key 说明
key 的要求和 set 的元素要求一致
set 的元素可以就是看做 key, set 可以看做是 dict 的简化版
hashable 可哈希才可以作为 key, 可以使用 hash() 测试
1.4 字典查找效率
2、字典 dict 操作
2.1 字典 dict 元素访问
1 、d[ key]
1.1 返回 key 对应的值 value
1.2 key 不存在,抛出 KeyError 异常
2 、get( key [ , default] )
1.1 返回 key 对应的值 value
1.2 key 不存在,返回缺省值,如果没有缺省值,就返回None
3 、setdefault( key [ , default] )
1.1 返回 key 对应的值 value
1.2 key 不存在,添加 kv 对,value 设置为缺省值,并返回缺省值,如果没有缺省值,则为 None
d1 = dict . fromkeys( range ( 5 ) , 9 )
print ( 1 , d1)
print ( 2 , d1. get( 1 ) , d1. get( 5 , 'abc' ) , d1. get( 5 ) )
print ( 3 , d1[ 0 ] )
print ( 4 , d1[ 5 ] )
1 {
0 : 9 , 1 : 9 , 2 : 9 , 3 : 9 , 4 : 9 }
2 9 abc None
3 9
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -