数据网站建设推广排名
- 列表与元组都是通过索引下标来获取元素值,而字典则是通过键来获取元素值。
- 字典是一种存储键值对的
- 一个字典中的key的类型不一定都一样;
- 一个字典中的value的类型也不必都一样;
- 字典对于key的类型有约束,对于value没约束;
1.创建字典
a = {}b = dict()# 创建同时设置初始值
c = {'id':1,'name':'zhang'}# 书写可以使用多行方式,好看,最后一个键值对的,可写可不写
d = {'id':1,'name':'zhang'
}
2.查找字典
- 使用in/not in查找key是否在字典中(in只是判定key是否存在,与value无关)
a = {'id':1,'name':'sxl'
}
print('id' in a) # True
print('n' in a) # Falseprint('sxl' in a) # False
print('sxl' not in a) # True
- 使用[ ]根据key获取value
a = {'id':1,'name':'sxl',100:'成绩'
}
print(a['id']) # 1
注意:对于字典来说,使用in或者[ ]来获取value是比较高效(字典使用了哈希);对于列表来说,使用in比较低效(把整个列表遍历一遍),[ ]较高效
- get取值
get可以取字典里不存在的键,默认返回None值,并且可以提前设置一个默认值
a = {'id':1,'name':'sxl',100:'成绩'
}
print(a.get('id')) # 1
print(a.get(1)) # None
print(a.get(2,100)) # 100
3.新增/修改元素
- key存在,则根据key修改value
- key不存在,则相当于新增键值对
a = {'id':1,'name':'sxl',100:'成绩'
}# 插入新的键值对
a['score'] = 90
print(a)# 修改value
a['score'] = 99
print(a)
- 更新字典
d = {'k1': 11, 2: 22, True: 33, None: 44, 3.14: 55
}
d.update({'k1': 1111, 'k3': 33})
print('更新集合后的字典 => ', d) # {'k1': 1111, 2: 22, True: 33, None: 44, 3.14: 55, 'k2': 222, 'k3':
33}t1 = d.pop(2)
print('弹出键为2的元素后的字典 => ', d) # {'k1': 1111, True: 33, None: 44, 3.14: 55, 'k2': 222, 'k3':
33}t2 = d.popitem()
print('弹出一个键值对后的字典 => ', d) # {'k1': 1111, True: 33, None: 44, 3.14: 55, 'k2': 222}
print('弹出的键值对 => ', t2) # ('k3', 33)d.clear()
print('清空字典内容 => ', d) # {}
4.删除字典
- pop删除
a = {'id':1,'name':'sxl',100:'成绩'
}
# 删除字典
a.pop('name') # {'id':1,100:'成绩'}
print(a)
- popitem从末尾开始删除一个字典
a = {'id':1,'name':'sxl',100:'成绩'
}
# 删除字典
a1 = a.popitem()
print(a) # {'id':1,'name':'sxl'}
print(a1) # (100,'成绩') 以元组形式
- del删除
a = {'id':1,'name':'sxl',100:'成绩'
}
# 删除字典
del a[100]
print(a) # {'id':1,'name':'sxl'}
5.字典的遍历
- 使用for循环
a = {'id':1,'name':'sxl',100:'成绩'
}
for key in a:print(key,a[key])
- keys获取key
注意:keys获取到字典中所有的key;values获取到字典中所有的value;items获取到字典中所有键值对
a = {'id':1,'name':'sxl',100:'成绩'
}
print(a.keys()) # dict_keys(['id','name',100]) 自定义的类型,可当作列表使用
print(a.values()) # dict_values([1,'sxl','成绩'])
print(a.items()) # dict_items([('id',1),('name','sxl'),(100,'成绩')]) 列表一样的结果,每个元素又是一个元组,元组里面包含键和值
for key,value in a.items():print(key,value) # id 1# name sxl# 100 成绩
6.合法key类型
python提供一个hash函数打印hash值
print(hash(0)) # 整型
print(hash(3.14)) # 浮点
print(hash('sxl')) # 字符串
print(hash(True)) # 布尔
print(hash((1,2,3))) # 计算元组
不能hash的类型:列表、字典
结论:不可变的对象一般可哈希,可变的对象一般不可哈希