当前位置: 首页 > news >正文

Python 字典

Python 字典

字典的介绍

  • 字典不仅可以保存值,还能对值进行描述
  • 使用大括号来表示一个字典,不仅有值 value ,还有值的描述 key
  • 字典里的数据都是以键值对 key-value 的形式来保留的
  • keyvalue 之间用冒号 : 来连接
  • 多个键值对之间用逗号 , 来分割
person = {'name': 'zhangsan', 'age': 18, 'weight': 150, 'height': 180}
print(person)  # {'name': 'zhangsan', 'age': 18, 'weight': 150, 'height': 180}

字典的注意事项

  1. 字典里的 key 不允许重复,如果 key 重复了,后一个 key 对应的值会覆盖前一个
  2. 字典里的 value 可以是任意数据类型,但是 key 只能使用不可变数据类型,一般使用字符串
person = {
    'name': 'zhangsan',
    'age': 18,
    'height': 180,
    'age': 20,  # 会替换上一个 age 的值
    'isPass': True,  # 值可以是 bool
    'hobbies': ['唱', '跳'],  # 也可以是 lsit
    4: 'good',  # key 只能是不可变数据类型
    ('yes', 'hello'): 100,
    # ['ok', 'no']: 'hi'  # key 只能是不可变数据类型
}

print(person)

字典元素的更改和添加

  • 直接使用 key 可以修改对应的 value
  • 如果 key 在字典里存在,是修改 key 对应的 value
  • 直接输入新的 key-value 键值对,字典里就会添加一个新的 key-value 键值对
person = {'name': 'zhangsan', 'age': 18, 'addr': '北京'}
print(person)  # {'name': 'zhangsan', 'age': 18, 'addr': '北京'}

person['name'] = 'list'
print(person['name'])  # list
print(person)  # {'name': 'list', 'age': 18, 'addr': '北京'}

person['gender'] = 'female'
print(person)  # {'name': 'list', 'age': 18, 'addr': '北京', 'gender': 'female'}

字典元素的删除

pop

使用方法 pop 可以删除字典内的指定键值对,执行结果是被删除的 value

person = {'name': 'zhangsan', 'age': 18, 'addr': '北京'}
print(person)  # {'name': 'zhangsan', 'age': 18, 'addr': '北京'}

x = person.pop('name')
print(x)  # zhangsan  执行结果是被删除的 value
print(person)  # {'age': 18, 'addr': '北京'}

popitem

使用方法 popitem 也可以删除字典内指定的键值对,执行结果是被删除这个元素组成的键值对,默认删除最后一个

person = {'name': 'zhangsan', 'age': 18, 'addr': '北京'}
print(person)  # {'name': 'zhangsan', 'age': 18, 'addr': '北京'}

y = person.popitem()
print(y)  # ('addr', '北京')
print(person)  # {'name': 'zhangsan', 'age': 18}

del

使用 del 语句也可以删除字典内指定的键值对

person = {'name': 'zhangsan', 'age': 18, 'addr': '北京'}
print(person)  # {'name': 'zhangsan', 'age': 18, 'addr': '北京'}

del person['age']
print(person)  # {'name': 'zhangsan', 'addr': '北京'}

clear

使用方法 clear 可以清空一个字典

person = {'name': 'zhangsan', 'age': 18, 'addr': '北京'}
print(person)  # {'name': 'zhangsan', 'age': 18, 'addr': '北京'}

person.clear()
print(person)  # {}

字典元素的查询

下标

  • 字典的数据在保存时,是无序的,你能通过下标来获取
person = {'name': 'zhangsan', 'age': 18, 'x': 'y'}
print(person)  # {'name': 'zhangsan', 'age': 18, 'x': 'y'}

print(person['name'])  # zhangsan  使用 key 获取对应的 value
# print(person['height'])  # KeyError: 'height'  如果要查找的 key 不存在,会报错

get

使用方法 get ,如果指定的 key 不存在,会返回 None,不会报错

person = {'name': 'zhangsan', 'age': 18, 'x': 'y'}
print(person)  # {'name': 'zhangsan', 'age': 18, 'x': 'y'}

print(person.get('height'))  # None

# 如果根据 key 获取不到 value 的值,使用给定的默认值
print(person.get('gender', 'female'))  # female
print(person.get('name', 'list'))  # zhangsan

# 使用 get 方法不会将原字典添加任何东西
print(person)  # {'name': 'zhangsan', 'age': 18, 'x': 'y'}

字典的合并

字典之间不支持加法运算

# print(persons1 + persons2)
# TypeError: unsupported operand type(s) for +: 'dict' and 'dict'

使用方法 update 进行字典的合并 a.update(b)

persons1 = {'name': 'zhangsan', 'age': 18}
print(persons1)  # {'name': 'zhangsan', 'age': 18}
persons2 = {'addr': '北京', 'height': 180}
print(persons2)  # {'addr': '北京', 'height': 180}

persons1.update(persons2)
print(persons1)  # {'name': 'zhangsan', 'age': 18, 'addr': '北京', 'height': 180}

字典的遍历

  • 字典的特殊在列表和元组是一个单一的数据,但是字典是键值对的形式

方法一

  • 直接用 for...in 循环遍历字典
person = {'name': 'zhangsan', 'age': 18, 'height': '180cm'}

for x in person:
    print(x, ':', person[x], end=' ')  # name : zhangsan age : 18 height : 180cm

方法二

  • 使用方法 keys 获取到所有的 key ,然后再遍历 key ,根据 key 获取 value
person = {'name': 'zhangsan', 'age': 18, 'height': '180cm'}

print(person.keys())  # dict_keys(['name', 'age', 'height'])

for k in person.keys():
    print(k, ':', person[k], end=' ')  # name : zhangsan age : 18 height : 180cm 

方法三

  • 使用方法 values 获取所有的 value,但是只能拿到 value ,不能拿到 key
person = {'name': 'zhangsan', 'age': 18, 'height': '180cm'}

print(person.values())  # dict_values(['zhangsan', 18, '180cm'])

for v in person.values():
    print(v, end=' ')  # zhangsan 18 180cm

方法四

  • 使用方法 items
person = {'name': 'zhangsan', 'age': 18, 'height': '180cm'}

print(person.items())  # dict_items([('name', 'zhangsan'), ('age', 18), ('height', '180cm')])

for item in person.items():
    print(item[0], ':', item[1], end=' ')  # name : zhangsan age : 18 height : 180cm
    
print()

for k, v in person.items():
    print(k, ':', v, end=' ')  # name : zhangsan age : 18 height : 180cm 

字典的推导式

# 有一个字典 dict = {'a': 100, 'b':200, 'c': 300},使用代码,
# 将字典点 key 和 value 互换,变成{100: 'a', 200:'b', 300:'c'}

dict = {'a': 100, 'b': 200, 'c': 300}
new_dict = {}

for k, v in dict.items():
    new_dict[v] = k

print(new_dict)  # {100: 'a', 200: 'b', 300: 'c'}

new_dict = {v: k for k, v in dict.items()}  # 使用字典推导式
print(new_dict)  # {100: 'a', 200: 'b', 300: 'c'}
http://www.dtcms.com/a/111986.html

相关文章:

  • FreeRTOS:嵌入式实时操作系统的轻量化解决方案
  • WPF设计学习记录滴滴滴5
  • KMP 算法全解析:高效实现字符串匹配与模板题详解
  • golang 的encoding/json包
  • python爬虫:小程序逆向(需要的工具前期准备)
  • 蓝桥杯---最短路径问题bfs
  • 【数据结构】邻接表 vs 邻接矩阵:5大核心优势解析与稀疏图存储优化指南
  • 三部门新政力推智能家居 居然智家数智化转型迎利好东风
  • YUV转RGBA的操作
  • 图解AUTOSAR_SWS_LINTransceiverDriver
  • 【嵌入式学习5】PyQt5模块介绍、创建第一个窗口
  • Linux安装启动ssh服务器以及ssh的配置
  • Leetcode 15 -- 双指针
  • Mysql 中的 MyISAM 引擎
  • 第十五届蓝桥杯单片机省赛程序设计试题
  • CSS 3D变换,transform:translateZ()
  • 从小米汽车事故反思 LabVIEW 开发
  • 专业的情商测评工具:EQ-i在线测评系统
  • Fastjson 处理 JSON 生成与解析指南
  • 31--当认证协议开始“选秀“:RADIUS、LDAP、AD与本地认证的C位之争
  • react redux的学习,多个reducer
  • drawio导出流程图为白色背景png图片
  • 对OSPF协议的LSA分析
  • Linux系统进程
  • AI 浪潮下企业身份管理:特点凸显,安全挑战升级
  • CMake学习-- install 指令详细说明
  • 11.多线程-信号量-线程池
  • AWS 云运维管理指南
  • ekf-imu --- 四元数乘法符号 ⊗ 的含义
  • SQLite 触发器