目录:https://www.jianshu.com/p/863c446364a8
一、字典
1、字典是另一种可变容器模型,且可存储任意类型对象。字典的键与值 用冒号分割,每个键值对之间用逗号分割,创建一个字典用{}建立。
dict1={key1:values,keys2:values,......}
需要注意的是:
键是唯一的,只能是不可变数据类型,数字、字符串、元组。如果重复键的话,最后的一个键值对会替换前面的。
值不唯一,可以是任意数据类型。
>>> dict1={"a":1,"b":2,"b":3}
>>> dict1
{'a': 1, 'b': 3}
创建一个空字典:
dict1={}
或者
d=dict()
二、字典的基础操作
增
>>> dict1={"name":"xt","age":20}
>>> dict1["sex"]="female"
>>> dict1
{'name': 'xt', 'age': 20, 'sex': 'female'}
删
# del 删除字典指定键值对
>>> dict1={'name': 'xt', 'age': 20, 'sex': 'female'}
>>> del dict1["age"]
>>> dict1
{'name': 'xt', 'sex': 'female'}
#pop() 删除字典指定键值对 ,并返回该键对应的值
>>> dict1={'name': 'xt', 'sex': 'female'}
>>> print(dict1.pop("sex"))
female
>>> print(dict1)
{'name': 'xt'}
#popitem 随机删除字典的键值对,并以元组方式输出返回值
>>> dict1={'name': 'xt', 'age': 20, 'sex': 'female'}
>>> print(dict1.popitem())
('sex', 'female')
>>> print(dict1)
{'name': 'xt', 'age': 20}
#clear() 清空字典
>>> dict1={'name': 'xt', 'age': 20, 'sex': 'female'}
>>> dict1.clear()
>>> print(dict1)
{}
#del 删除整个字典
>>> dict1={'name': 'xt', 'age': 20, 'sex': 'female'}
>>> del dict1
>>> dict1 #此时在查看dict1时会报错,因为dict1已被删除,dict1不存在了。
改
>>> dict1={'name': 'xt', 'age': 20}
>>> dict1["age"]=22
>>> print(dict1)
{'name': 'xt', 'age': 22}
查
#查看字典所有元素
>>> dict1={'name': 'xt', 'age': 20, 'sex': 'female'}
>>> print(dict1)
{'name': 'xt', 'age': 20, 'sex': 'female'}
#查看某个键值对
>>> dict1={'name': 'xt', 'age': 20, 'sex': 'female'}
>>> print(dict1["age"])
20
#查看字典所有的key值
>>> dict1={'name': 'xt', 'age': 20, 'sex': 'female'}
>>> print(dict1.keys())
dict_keys(['name', 'age', 'sex'])
#同理,我们也可以查看字典所有的value值
>>> print(dict1.values())
dict_values(['xt', 20, 'female'])
#这两个函数的结果分别是dict_keys([])和dict_values([]),他们是字典自带的两种数据类型,只能进行遍历操作,我们需要做其他操作时,我们就需要将他专成list()类型或者set()类型。
>>> print(list(dict1.keys()))
['name', 'age', 'sex']
或
>>> print(set(dict1.keys()))
{'sex', 'name', 'age'}
#dict1.values同理。
#查看字典所有的key-value值
>>> print(list(dict1.items()))
[('name', 'xt'), ('age', 20), ('sex', 'female')] #将key-values对以元组的形式输出
三、字典的内置函数
(1)# len() 计算字典元素个数,即键的总数。
dict1={'name': 'xt', 'age': 20}
>>> print(len(dict1))
2
(2)# get () 函数返回指定键的值,如果值不在字典中返回默认值。
dict1={'name': 'xt', 'age': 20}
#键存在,不改动,返回字典中相应的键对应的值
>>> dict1.get("age",22)
20
#键不存在,返回默认值
>>> dict1.get("sex","female")
'female'
>>>dict1
{'name': 'xt', 'age': 20} #键不存在时,返回默认值,但不修改字典
(3)# setdefault() 和get()类似, 如果键不存在于字典中,将会添加键并将值设为默认值。
>>>dict1={'name': 'xt', 'age': 20}
#键存在,不改动,返回字典中相应的键对应的值
>>> dict1.setdefault("age",22)
20
#键不存在,在字典中中增加新的键值对,并返回相应的值
>>> dict1={'name': 'xt', 'age': 20}
>>> dict1.setdefault("sex","female")
'female'
>>> dict1
{'name': 'xt', 'age': 20, 'sex': 'female'}
(4)#copy() 返回一个字典的浅复制
>>> dict2= {'user':'runoob','num':[1,2,3]}
>>> dict3=dict2.copy()
>>> dict3
{'user': 'runoob', 'num': [1, 2, 3]}
(5) # fromkeys() 用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
>>>x=('name','age','sex')
#不指定值
>>>dict1=dict.fromkeys(x)
>>>print(dict1)
{'age':None,'name':None,'sex':None}
#指定值
dict1=dict.fromkeys(x,10)
>>>print(dict1)
{'age':10,'name':10,'sex':10}
(6) #update() 连接dict1和dict2
>>>dict1= {'Name':'xt','Age':20}
>>>dict2= {'Sex':'female'}
>>>dict1.update(dict2)
>>>print(dict1)
{'Name':'hx','Age':20,'Sex':'female'}
(7)key in dict 如果键在字典dict里返回true,否则返回false
>>> dict1= {'Name':'xt','Age':20}
>>> print("Name" in dict1)
True
>>> print("Sex" in dict1)
False
(8) key not in dict 如果键不在字典dict里返回true,否则返回false
>>> dict1= {'Name':'xt','Age':20}
>>> print("Name" in dict1)
False
>>> print("Sex" in dict1)
True