2.2.2.6Python-字典

总目录:https://www.jianshu.com/p/e406a9bc93a9

Python - 子目录:https://www.jianshu.com/p/50b432cb9460

字典

字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d= {key1:value1,key2:value2}


键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

dict1= {'a':1,'b':2,'b':'3'}

print(dict1['b'])

'3'

print(dict1)

{'a':1,'b':'3'}


值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

一个简单的字典实例:

dict1= {'Alice':'2341','Beth':'9102','Cecil':'3258'}

也可如此创建字典:

dict1= {'abc':456}

dict2= {'abc':123,98.6:37}

*字典两大特点:无序,键唯一


基础操作


dit ={'name':'hx' }


dit['age']=20

print(dit)

{'name':'hx','age':20}



dict1 = {'name': 'hx', 'age': 18, 'class': 1,'cs':1}


del dict1['name']           #删除字典中指定键值对

print(dict1)

{'age': 18, 'class': 1}


print(dict1.pop('age'))           #删除字典中指定键值对,并返回该键值对的值

18


ret=dict1.pop('age')         #这种写法等同于print(dic4.pop('age'))

print(ret)

18


print(dict1)          #已删除name和age

{'class': 1,'cs':1}


a = dict1.popitem()         #随机删除某组键值对,并以元组方式返回值

print(a, dict1)

('class', 1) {'cs':1}


dict1.clear()          # 清空字典

print(dict1)

{}


del dict1           #删除整个字典

print(dict1)

报错


dict1={'name':'hx','age':16}

dict1['age']=18

print(dict1)

{'name':'hx','age':18}


查 

dict1={'age': 18, 'name': 'hx', 'hobby': 'girl'}


print(dict1)

{'age': 18, 'name': 'hx', 'hobby': 'girl'}


print(dict1['name'])

hx


print(dict1.keys())             #这里来区分为什么调用这些方法要把结果转换为列表

dict_keys(['age', 'name', 'hobby'])


print(list(dict1.values()))

[18, 'hx', 'girl']


print(list(dict1.items()))          #将k-y对以元组的形式输出

[('age', 18), ('name', 'hx'), ('hobby', 'girl')]


内置函数


get 

函数返回指定键的值,如果值不在字典中返回默认值。

dict1={'name':'hx','age':20}


#键存在,不改动,返回字典中相应的键对应的值

re=dict1.get('age',30)

print(re)

20


#键不存在,返回默认值

re1=dict1.get('class',none)

print(re1)

none


setdefault  

和get()类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

dict1={'name':'hx','age':20}


#键存在,不改动,返回字典中相应的键对应的值

ret=dict1.setdefault('age',34)

print(ret)

20


#键不存在,在字典中中增加新的键值对,并返回相应的值

ret1=dict1.setdefault('hobby','girl')

print(dict)

{'name': 'hx', 'age': 20, 'hobby': 'girl'}

print(ret1)

girl


len    

计算字典元素个数,即键的总数。

dic6={'name':'hx','age':20}

print(len(dic6))

2


copy 

返回一个字典的浅复制

dict1= {'user':'runoob','num':[1,2,3]} 


# 引用对象

dict2=dict1

#浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用

dict3=dict.copy()         


# 修改 data 数据 

dict1['user']='root'

dict1['num'].remove(1)


# 输出结果 

print(dict1) 

{'user':'root','num':[2,3]}

print(dict2) 

{'user':'root','num':[2,3]}


#深拷贝一级目录,修改源字典一级目录不变。

#二级目录不拷贝,直接引用修改过的元素。 (深浅拷贝说明直达)

print(dict3) 

{'user':'runoob','num':[2,3]}


fromkeys  

用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。

seq=('name','age','sex') 


dict1=dict.fromkeys(seq)

print("新的字典为 : %s"%str(dict1)) #不指定值

新的字典为:{'age':None,'name':None,'sex':None}


dict1=dict.fromkeys(seq,10)

print("新的字典为 : %s"%str(dict1)) #指定值

新的字典为:{'age':10,'name':10,'sex':10}


key in dict  

如果键在字典dict里返回true,否则返回false

dict1= {'Name':'hx','Age':7}


# 检测键 Age 是否存在 

if 'Age' in dict1: 

    print("键 Age 存在") 

else: 

    print("键 Age 不存在")

键 Age 存在


# 检测键 Sex 是否存在 

if 'Sex' in dict1:

    print("键 Sex 存在")

else: 

    print("键 Sex 不存在")

键 Sex 不存在


key not in dict  

如果键不在字典dict里返回true,否则返回false

dict1= {'Name':'hx','Age':7}


# 检测键 Age 是否存在

if 'Age' not in dict1:

    print("键 Age 不存在")

else:

    print("键 Age 存在")

键 Age 存在


update 

把字典dict2的键/值对更新到dict里

dict1= {'Name':'hx','Age':7} 

dict2= {'Sex':'female'} 


dict1.update(dict2)

print("更新字典 dict :",dict1)

更新字典dict:{'Name':'hx','Age':7,'Sex':'female'}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容