总目录: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'}