2.2.2.6Python-字典

总目录:https://blog.csdn.net/qq_41106844/article/details/105553392

Python - 子目录:https://blog.csdn.net/qq_41106844/article/details/105553333

 

 

字典

字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 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'}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值