字典
列表和字典区别
列表:强调整体,记录整体的某一个特征
字典:强调个体,记录个体的多个特征。
(一)基本概念
特定:可变类型,元素以键值(key-value)对形式存在,用大括号包围的一种类型。
格式:字典名 = {key1:value1,key2:value2,...}
注意:
- key:不可变类型,唯一的。
# d1 = {'a':10}
# d2 = {10:10}
# d3 = {1.4:10}
# d4 = {True:10}
# d5 = {[1,2]:10} # 错误
# d6 = {(1,2):10}
d7 = {{1:1}:10} # 错误
- value:真正保存的数据,没有任何限制。
创建字典:
d1 = {} # 空字典
d2 = dict() # 空字典
zs = {'name':'zs',"age":20,'height':170,"weight":170}
ls = {'name':'ls',"age":23,'height':180,"weight":70}
( 二 )字典的特有方法
1 增加
- 字典名[key] = value:键不存在,将键值对添加到字典最后;如果key存在,则覆盖
- setdefault(key,default_value):键不存在,将键值对添加到字典最后。如果key存在,则不覆盖。
zs = {'name':'zs',"age":20,'height':170}
# 增加键值对:weight
# zs['weight'] = 70
# zs['weight'] = 80 # 覆盖掉原值
# print(zs)
# 增加键值对:weight
zs.setdefault('weight',70)
# zs.setdefault('weight',80) # 不覆盖,
zs.setdefault('name','ls') # 不能修改
print(zs)
2 删除
方法 | 描述 |
---|---|
pop(key) | 弹出,返回并删除指定键对应的值, dict.pop(‘key’) |
popitem() | 弹出最后一个键值对(>=3.7) |
clear() | 清空字典 |
del | 删除整个字典,或者通过字典的key删除对应键值对; |
zs = {'name':'zs',"age":20,'height':170}
# pop(key) # 返回删除的值
# print(zs.pop('age'))
# popitem() # 返回删除的键值对
print("张三的重量是:",zs.popitem()[1])
print(zs)
# del3
del zs # 删除整个zs变量
del zs['name'] # 删除name键值对
# clear()
zs.clear() # 清空字典
3 修改
方法 | 描述 |
---|---|
字典名[key]=value | 通过key 添加value值,如果key存在则覆盖 |
update(dict) | 传递一个字典,如果key相同则覆盖,没有的key则添加 |
zs_1 = {'name':'zs',"age":20,'height':170}
zs_2 = {"name":'zs','weight':60,"age":30}
# zs_1.update(zs_2)
# print(zs_1) # {'name': 'zs', 'age': 30, 'height': 170, 'weight': 60}
# print(zs_2) # 没有变化
zs_2.update(zs_1)
print(zs_1) # 没有变化
print(zs_2) # {'name': 'zs', 'weight': 60, 'age': 20, 'height': 170}
4 查
方法 | 描述 |
---|---|
根据key查找 | 通过指定的key找对应的值 dict[‘key’] |
keys() | 获取字典所有的键 |
values() | 获取字典所有的值 |
items() | 获取字典所有的键值对 |
注意:keys,values,items
获得的类型不是列表,但是是可迭代对象,可以直接使用for循环遍历,如果需要按照列表方式操作,需要先转化为列表。
zs = {'name':'zs',"age":20,'height':170}
for i in zs.keys():
print(i) # 打印所有的键
for i in zs.values():
print(i) # 打所有的值
for i in zs.items():
print(i) # 打印所有的键值对(元组形式)
# 直接遍历字典,相当与遍历所有的键
for i in zs:
print(i) # 打印所有的键
(三)其他操作
1 get(key,[返回的信息])
: 以键取值,如果指定键不存在,默认返回None,可以指定返回内容
zs = {'name':'zs',"age":20,'height':170}
# print(zs['name']) # zs
# print(zs['hometown']) # 报错
# 使用get解决
print(zs.get('name',"没有找到")) # zs
print(zs.get('hometown',"郑州")) # 不报错,返回自定义信息
2 in , not in
zs = {'name':'zs',"age":20,'height':170}
# print(zs['name']) # zs
# print(zs['hometown']) # 报错
# 判定
if 'hometown' in zs:
print(zs['hometown'])