一、数据类型划分
1)不可变数据类型
不可变数据类型又称不可哈希
- 字符串
- 布尔值
- 数字
- 元祖
2)可变数据类型
可变数据类型又称可哈希
- 列表
- 字典
- 集合
字典的key必须是不可变数据类型
dic = {
'name':['皮皮江','pipijiang'],
'py':['num',{
'avg_age':18,
}],
True:1,
2:'hello',
(1,2,3,4):'pyrookie'
}
二、字典的特征
1)优点
字典的Key在内部转换为数字,在查询时使用二分查找,查找的速度最快
2)数据存储
字典可以存储大量的关系型数据
三、字典的增删改查
dic1 = {
'age':18,
'name':'pipijiang',
'sex':'male'
}
1)增加
1、dict[‘键’] = 值
当要添加的键不存在时 添加
dic1['high'] = 180
print(dic1)
{'high': 180, 'age': 18, 'name': 'pipijiang', 'sex': 'male'}
当要添加的键存在时 覆盖
dic1['age'] = 16
print(dic1)
{'name': 'pipijiang', 'sex': 'male', 'age': 16}
1、D.setdefault(k[,d])
当要添加的K不存在时 添加
dic1.setdefault('weight',150)
print(dic1)
{'age': 18, 'name': 'pipijiang', 'sex': 'male', 'weight': 150}
当要添加的K存在时 不做任何处理
dic1.setdefault('name',"pyrookie")
print(dic1)
{'age': 18, 'name': 'pipijiang', 'sex': 'male'}
2)删除
dic1 = {
'age':18,
'name':'pipijiang',
'sex':'male'
}
1、按键名删除 D.pop(k[,d])
功能:按传入的值删除字典中的键值对,有返回值
1. 当删除的键值对存在时
print(dic1.pop('age'))
print(dic1)
{'name': 'pipijiang', 'sex': 'male'}
18
2. 当删除的键值对不存在时,返回pop中的第二个参数
print(dic1.pop('heigh','没有值'))
print(dic1)
没有值
{'age': 18, 'name': 'pipijiang', 'sex': 'male'}
3. 当删除的键值对不存在时,没有第二个参数
会报错
2、随机删除 D.popitem() -> (k, v)
功能:随机删除字典中的任意键值对,并返回所删除的键值对
print(dic1.popitem())
print(dic1)
('sex', 'male')
{'age': 18, 'name': 'pipijiang'}
3、清空字典 D.clear() -> None
4、删除字典对象
del dic1
5、删除字典中的键值对
注意:如果删除的内容不存在会报错,一般不用
del dic1['age']
3)修改
dic1 = {
'age':18,
'name':'pipijiang',
'sex':'male'
}
1、dic1[‘age’] = 20
功能:修改 或者 增加 键值对
2、更新 D.update([E, ]**F) -> None
功能:将参数中字典的键值对添加或覆盖到D字典中。
dic = {
'name':'Rookie',
'weight':68
}
dic1.update(dic)
print(dic1)
{'sex': 'male', 'name': 'Rookie', 'weight': 68, 'age': 20}
4)查询
dic1 = {
'age':18,
'name':'pipijiang',
'sex':'male'
}
1、D.keys() -> a set-like object
返回一个类似列表的对象
print(dic1.keys())
['age', 'name', 'sex']
2、D.values()
返回一个类似列表的对象
print(dic1.values())
[18, 'pipijiang', 'male']
3、D.items()
返回一个类似列表中包含元祖的对象,每个元祖中包含键和值
print(dic1.items())
[('age', 18), ('name', 'pipijiang'), ('sex', 'male')]
4、遍历查询
for k,v in dic1.items():
print(k,v)
sex male
age 18
name pipijiang
5、D[键名]
注意键名不存在时会报错
6、D.get(k[,d])
当k存在时返回k对应的value
dic1.get('name')
'pipijiang'
当k不存在时返回参数 d
dic1.get('heigh','没有这个')
'没有这个'
5)创建字典
1、直接创建
dic = {
'name':'pyrookie',
'age':'18',
}
2、dict.fromkeys() 方法
dic = dict.fromkeys([1,2,3],'张三')
dic[1] = '李四'
print(dic)
{1: '李四', 2: '张三', 3: '张三'}
四、关于字典的小知识点
1)字典不能再for循环中删除
字典在for in 循环中遍历时会报错
2)删除字典中的元素
1、删除字典中含有 ‘k’ 的键值对
方法一
思路:新建一个列表作为中间字典,将有没有k的加入到新字典中
dic = {'k1':'v1','k2':'v2','a3':'v3'}
dic1 = {}
for i in dic:
if 'k' not in i:
dic1[i] = dic[i]
dic = dic1
print(dic)
{'a3': 'v3'}
方法二
思路:将含有k的键加入到一个新列表中,再遍历列表,将键删除
dic = {'k1':'v1','k2':'v2','a3':'v3'}
li = []
for i in dic:
if 'k' not in i:
li.append(i)
for i in li:
del dic[i]
print(dic)
{'a3': 'v3'}