Python3 字典
Python3 字典
字典是另一种可变容器模型,且可存储任意类型对象。 字典是以键/值对来存储数据的一种可变容器,所谓可变即是说容器的大小可以改变,并且其中的元素可以进行修改或删除,如果熟悉Java的人就知道python的字典类似于Java的hashtable集合,字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号( , )分割,整个字典包括在大括号 { } 中,和JSON的格式有点类似 ,声明格式如下所示:
d = {key1 : value1, key2 : value2 }
在同一个字典中,键必须是唯一的,但值则不必。 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。 声明字典代码示例:
dict1 = {"name": "张三", "age": "20", "address": "湖南"}
dict2 = {"age": 20, "hight": 170}
dict3 = {1: 12.5, 2: 20, 2.5: "test", "one": 12.23} # 可以使用不同类型
print(dict1)
print(dict2)
print(dict3)
运行结果:
{‘name’: ‘张三’, ‘age’: ‘20’, ‘address’: ‘湖南’} {‘age’: 20, ‘hight’: 170} {1: 12.5, 2: 20, 2.5: ‘test’, ‘one’: 12.23}
访问字典里的值
使用方括号访问字典里的值,把键放入方括号中,就能得到与此键相对应的值,代码示例:
dict1 = {"name": "张三", "age": "20", "address": "湖南"}
dict2 = {"age": 20, "hight": 170}
dict3 = {1: 12.5, 2: 20, 2.5: "test", "one": 12.23} # 可以使用不同类型
print(dict1["name"])
print(dict2["hight"])
print(dict3[1])
运行结果:
张三 170 12.5
如果你访问一个字典中不存在的键,就会抛出异常,错误示例:
dict1 = {"name": "张三", "age": "20", "address": "湖南"}
print(dict1["sex"])
运行结果:
Traceback (most recent call last): File “E:/PythonProject/TestDict1.py”, line 3, in print(dict1[“sex”]) KeyError: ‘sex’
修改字典
要向字典中添加新的元素,只需要增加新的键/值对就可以了,修改已有值则需要通过键去重新赋值,代码示例:
dict1 = {"name": "张三", "age": "20", "address": "湖南"}
dict1["name"] = "李四"
print("修改了name键的值:", dict1)
dict1["sex"] = "男"
print("添加了一个键值:", dict1)
运行结果:
修改了name键的值: {‘name’: ‘李四’, ‘age’: ‘20’, ‘address’: ‘湖南’} 添加了一个键值: {‘name’: ‘李四’, ‘age’: ‘20’, ‘address’: ‘湖南’, ‘sex’: ‘男’}
删除字典元素
能删除单一的元素也能将整个字典里的元素都清空,清空只需要调用 clear() 方法。 删除字典对象和删除字典中某个键值都是使用del命令,代码示例:
dict1 = {"name": "张三", "age": "20", "address": "湖南"}
del dict1["name"] # 删除字典中的name键值
del dict1 # 将字典对象整个删除
dict1.clear() # 清空字典中的元素,字典对象不会被删除
字典键的特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。 两个重要的点需要记住: 1)不允许同一个键出现两次,创建时如果同一个键被赋值两次或多次,则以最后一个键的值为准,代码示例:
dict1 = {"name": "张三", "age": "20", "address": "湖南", "name": "李四"}
print(dict1["name"])
print(dict1)
运行结果:
李四 {‘name’: ‘李四’, ‘age’: ‘20’, ‘address’: ‘湖南’}
2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,错误示例:
dict1 = {["name"]: "张三", "age": "20", "address": "湖南"}
print(dict1)
运行结果:
Traceback (most recent call last): File “E:/PythonProject/TestDict2.py”, line 1, in dict1 = {[“name”]: “张三”, “age”: “20”, “address”: “湖南”} TypeError: unhashable type: ‘list’
字典内置函数&方法
- java.lang.Exception: 资源处理失败,失败原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown
- Server Tomcat v7.0 Server at localhost failed to start.
- Ovs+Dpdk简单实践
- Spark入门,概述,部署,以及学习(Spark是一种快速、通用、可扩展的大数据分析引擎)
- 创建基于MailKit和MimeKit的.NET基础邮件服务
- 把一个矩阵行优先展成一个向量,numpy.ravel() vs numpy.flatten()区别
- dataframe插入数据报错SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a
- python 对矩阵进行复制操作 np.repeat 与 np.tile区别
- python标准异常:中英文对比
- 激活windows10转到电脑设置的水印消失3种方法总结
- Android 运行时权限及APP适配
- python如何保存矩阵,保存matrix,保存numpy.ndarray
- SDP(12): MongoDB-Engine - Streaming
- .NET Core开源API网关 – Ocelot中文文档
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于SpringBoot的Web前后端分离开发
- 【赵渝强老师】Docker的日志
- 超全递归技巧整理,这次一起拿下递归
- [译] React 测试驱动开发:从用户故事到产品
- 计算机基础之位运算 | 按位取反
- 关于php的ini文件相关操作函数浅析
- PHP中的输出缓冲控制
- SpringCloud微服务:基于Nacos组件,整合Dubbo框架
- [译] 使用 microbundle 打包 TypeScript 组件库
- 3分钟短文 | Laravel 获取模型查询生成的SQL语句
- 基于git的测试用例管理方案
- 【赵渝强老师】MongoDB管理用户的认证机制
- 使用Microsoft Teams Updater执行代码
- 腾讯云 Serverless 云函数实现 CKafka 数据转存到 ES
- 软硬件都开源!基于千兆以太网的温度传感应用