字典

列表和字典区别

  • 列表:强调整体,记录整体的某一个特征

  • 字典:强调个体,记录个体的多个特征。

(一)基本概念

特定:可变类型,元素以键值(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'])  
上一篇:Vant引入CDN实现图片懒加载


下一篇:6.4 图的存储结构