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

[Python] 字典操作及方法总结

字典是Python内置的数据结构之一,以键值对的方式存储数据 

值value可以取任何数据类型,但键key必须是不可变的,如字符串,数字或元组

1.创建字典

字典的每个键值对(key-value)冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号{}

直接赋值创建字典格式如下所示:

dicts = {key1: value1, key2: value2,...}

dict1 = {'name':'Andy', 'age':18}
# {'name': 'Andy', 'age': 18}
print(dict1)

使用内置函数dict()创建字典 

stu_info1 = dict({'name':'Andy', 'age':18})
# {'name': 'Andy', 'age': 18}
print(stu_info1)

stu_info2 = dict([('num', '20220907'), ('name', 'Jack'), ('sex', 'male')])
# {'num': '20220907', 'name': 'Jack', 'sex': 'male'}
print(stu_info2)

stu_info3 = dict(num = '20220101', name = 'Lee', sex = 'male')
# {'num': '20220101', 'name': 'Lee', 'sex': 'male'}
print(stu_info3)

stu_info4 = dict(zip(['num', 'name', 'sex'], ['20220201', 'Rita', 'male']))
# {'num': '20220201', 'name': 'Rita', 'sex': 'male'}
print(stu_info4)

创建一个空字典

dict2 = {}
dict3 = dict()

提示Tips:字典中的所有元素都是一个key-value键值对,key不允许重复,value可以重复;一个key只能对应一个value,所以多次对一个key放入value,后面的value值会把前面的value值覆盖掉

dicts = {'name':'Rita','age':18}
# {'name': 'Rita', 'age': 18}
print(dicts)
dicts['age'] = 20
# {'name': 'Rita', 'age': 20}
print(dicts)

2.字典常见操作方法

2.1查询字典dict包含的键值对数

len(dict)用于返回字典dict包含的项(键值对)数

注明:dict代表字典

dict = {'name':'Andy', 'age':18}
print(len(dict)) # 2

2.2访问字典value值

dict[key]用于返回与键key相关联的值value 

注明:dict代表字典,key代表键

dict = {'name':'Andy', 'age':18}
print(dict['name']) # Andy
print(dict['age']) # 18

2.3值value关联到键key 

dict[key] = value用于将值value关联到键key

注明:dict代表字典,key代表键,value代表值

dict = {'name':'Andy', 'age':18}
dict['gender'] = '男'
# {'name': 'Andy', 'age': 18, 'gender': '男'}
print(dict)
dict['age'] = 22
# {'name': 'Andy', 'age': 22, 'gender': '男'}
print(dict)

2.4删除键为key的项 

del dict[key]用于删除键为key的项

注明:dict代表字典,key代表键

dict = {'name':'Andy', 'age':18}
del dict['age']
# {'name': 'Andy'}
print(dict)

2.5检查字典dict是否包含键为key的项

key in dict用于检查字典dict是否包含键为key的项

注明:dict代表字典,key代表键

dict = {'name':'Andy', 'age':18, 'gender':'男'}
print('name' in dict) # True
print('address' in dict) # False

2.6清空字典 

clear()用于删除所有的字典项(即删除字典内所有元素)

dict = {}
dict['name'] = 'Rita'
dict['age'] = 20
# {'name': 'Rita', 'age': 20}
print(dict)
dict.clear()
# {}
print(dict)

扩展补充知识

x = {}
y = x
x['name'] = 'Andy'
# {'name': 'Andy'}
print(y)
x = {}
# {'name': 'Andy'}
print(y)
x = {}
y = x
x['name'] = 'Andy'
# {'name': 'Andy'}
print(y)
x.clear()
# {}
print(y)

2.7复制字典

copy()返回一个新字典,其包含的键值对与原来的字典相同(浅复制)

dict = {'username':'admin', 'machines':['foo','bar','baz']}
copy_dict = dict.copy()
# 对copy_dict字典进行处理
copy_dict['username'] = 'Andy'
copy_dict['machines'].remove('bar')
# {'username': 'admin', 'machines': ['foo', 'baz']}
print(dict)
# {'username': 'Andy', 'machines': ['foo', 'baz']}
print(copy_dict)

2.8返回字典所有的键

keys()用于返回字典中的所有键key

dict = {'name':'Andy', 'age':20, 'gender':'男'}
print(dict.keys()) # dict_keys(['name', 'age', 'gender'])

2.9返回字典中的所有值 

values()用于返回字典中的所有值value

dict = {'name':'Andy', 'age':20, 'gender':'男'}
print(dict.values()) # dict_values(['Andy', 20, '男'])

不同于方法keys(),values()返回的值可包含重复值

dict = {}
dict[1] = 1
dict[2] = 2
dict[3] = 3
dict[4] = 1
# dict_values([1, 2, 3, 1])
print(dict.values())

2.10返回可遍历的(键, 值)元组列表

items()用于返回包含所有字典项的列表,其中每个元素都以(key,value)形式进行呈现

dict = {'name':'Andy', 'age':20, 'gender':'男'}
# dict_items([('name', 'Andy'), ('age', 20), ('gender', '男')])
print(dict.items()) 

2.11返回指定键的值 

get(key, default=None)用于返回指定键key的对应值value

dict = {'name':'Andy', 'age':20, 'gender':'男'}
print(dict.get('gender')) # 男

注意:使用get()方法访问不存在的键key时,不会报错,而是返回None,我们可指定"默认值",这样就吸返回我们指定的值而不是None

dict = {'name':'Andy', 'age':20, 'gender':'男'}
# 访问不存在的键key
print(dict.get('address')) # None
print(dict.get('address','There is no this key')) # There is no this key

扩展补充知识

使用dict[key]访问字典value时,如果输入的键key并不在字典dict中,结果会报错

dict = {'name':'Andy', 'age':20, 'gender':'男'}
# 访问不存在的键key会报错
print(dict['address']) # KeyError: 'address'

2.12删除字典给定键key所对应的值value

pop(key)用于删除字典给定键key所对应的值value(即将该键值对从字典中删除),返回值为被删除的值value

dict = {'x':1, 'y':2, 'z':3}
dict.pop('z') # 3
print(dict) # {'x': 1, 'y': 2}

2.13将字典dict2的键值对更新到字典dict1中

update()使用一个字典中的项(键值对)来更新另一个字典 

dict1 = {'name':'Tian', 'age':25, 'gender':'男'}
dict2 = {'name':'Odin', 'address':'深圳'}
dict1.update(dict2)
# {'name': 'Odin', 'age': 25, 'gender': '男', 'address': '深圳'}
print(dict1)

相关文章:

  • U9二次开发之BP定时任务插件开发
  • Java 经典面试题
  • Policy-Based Method RL
  • 001:你好Direct 2D! 在对话框中初次使用D2D
  • 文件系统基础
  • 2022/9/5开始第三版接口自动化(yaml用例)测试框架(记录搭建过程)
  • Github每日精选(第38期):Java 8+ Jar 和 Android APK 逆向工程套件(反编译器、编辑器、调试器等)bytecode-viewer
  • Pandas 操作数据(三)
  • 查题系统API无限搜题接口搭建
  • python之爬虫基础(1)
  • CVE-2022-22978 Spring-security 认证绕过漏洞分析和漏洞挖掘思考
  • 小孩取名:瑭字的寓意和含义
  • 7、IOC 之Bean定义继承 parent
  • J9数字论:模块化公链能否成为公链新趋势?
  • UVM环境中reset复位的处理
  • [deviceone开发]-do_Webview的基本示例
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • bootstrap创建登录注册页面
  • C++11: atomic 头文件
  • codis proxy处理流程
  • css系列之关于字体的事
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Leetcode 27 Remove Element
  • Shadow DOM 内部构造及如何构建独立组件
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 飞驰在Mesos的涡轮引擎上
  • 浮现式设计
  • 聊一聊前端的监控
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 通过git安装npm私有模块
  • 微服务核心架构梳理
  • 微信小程序实战练习(仿五洲到家微信版)
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • #pragma data_seg 共享数据区(转)
  • #Spring-boot高级
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (多级缓存)缓存同步
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (四) 虚拟摄像头vivi体验
  • (四)图像的%2线性拉伸
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)ObjectiveC 深浅拷贝学习
  • (转)德国人的记事本
  • (转载)Google Chrome调试JS
  • *上位机的定义
  • .cfg\.dat\.mak(持续补充)