3.7 Dictionary(字典)
3.7.1 定义Dictionary(字典)
字典的键(key)必须为不可变类型(数字、字符串、元组)且键名不能重复,定义字典的方式有两种:
- dict()定义:dict_name = dict((["key","value"], ["键名","值"])),元组里面嵌套列表
- 直接赋值:dict_name = {"key":"value","键名":"值"}
dict_1 = dict((["name", "Emily"],["age", "18"])) # 结果为:{'name': 'Emily', 'age': '18'}
print(dict_1)
dict_2 = {"name": "Emily","age": "18"}
print(dict_2) # 结果为:{'name': 'Emily', 'age': '18'}
空字典:dict_name = {}。集合也用了花括号,但是空集合创建方式为:set_name = set()
3.7.2 字典的增删改查
- 增加:dict_name[key] = value,来增加字典里的键值对。
dict_3 = dict_2 = {"name": "Emily", "age": "18"}
dict_3["sex"] = "female"
print(dict_3) # 结果为:{'name': 'Emily', 'age': '18', 'sex': 'female'}
- 删除:del dict_name[key],来删除键。
# 接上述例子
del dict_3["sex"]
print(dict_3) # 结果为:{'name': 'Emily', 'age': '18'}
- 修改:dict_name[key] = value,选择字典内存在的键,来修改值。
dict_3["age"] = "20"
print(dict_3) #结果为:{'name': 'Emily', 'age': '20'}
- 查找(获取):dict_name[key],通过键来查找对应的值(类似下标)。
print(dict_3["name"]) # 结果为Emily
3.7.3 字典的操作方法
- get():用于从字典获取指定键的值。在get()函数中可以设置默认值,当get函数没有获取到对应键时,get函数会将默认值返回,格式为:dict_name.get(key,默认值(可以没有))
- len():求字典长度,格式为:len(dict_name)。
- keys():将以列表的形式返回字典中的所有键,格式为:dict_name.keys()。
- values():将以列表的形式返回字典中的所有值,格式为:dict_name.values()。
- items():将以列表的形式返回字典中的所有键值对,格式为:dict_name.items()。
- clear():将字典清空,格式为:dict_name.clear()。
- copy():用于创建字典的副本,修改原字典对象,不会影响其副本,格式为:dict_name_copy()。
- fromkeys():用于创建一个新的字典,第一个参数是一个序列(列表/元组/集合),用于字典的键,第二个参数可以是任何数据类型,作为每个键的值(不管第二个参数是什么数据类型,它都会是第一个参数中每一个键的值),格式为:dict_name.fromkeys(参数1,参数2)
- pop():从字典中移除指定键,并返回该键所对应的值,格式为:dict_name.pop(key)。
- popitem():用于从字典中删除最后一项,并以元组形式返回该项所对应的键和值,格式为:dict_name.popitem()。
- setdefault():用于设置键的默认值,若在字典中该键已经存在,则忽略设置;若不存在则添加该键和值,格式为:dict_name.setdefault(key, value)。
- update():将字典2更新到字典1。若字典2的键在字典1中已经存在,则对字典1进行修改(覆盖),若不存在,则对字典1进行添加,格式为:dict_name1.update(dict_name2)。
# -----------get()
dict_4 = {"name": "Emily", "age": "18"}
r = dict_4.get("name")
print(r) # 结果为:Emily
r1 = dict_4.get("sex")
print(r1) # 结果为:None
r2 = dict_4.get("sex", "female") # 给了默认值
print(r2) # 结果为:female
print(dict_4) # 虽然给了sex默认值,但实际dict_4没有被改变还是{"name": "Emily", "age": "18"}
# -----------len()
print(len(dict_4)) # 结果为:2
# -----------keys()
print(dict_4.keys()) # 结果为:dict_keys(['name', 'age'])
dict_5 = {"name": "Emily","age": "18","skills": {"skill_1": "Java","skill_2": "Python"}
}
print(dict_5.keys()) # 结果为dict_keys(['name', 'age', 'skills']) # 不会吧嵌套的字典里的键输出来
print(dict_5.get("skills").keys()) # 获取嵌套里面的键
# ------------values()
dict_6 = {"name": "Emily", "age": "18"}
r3 = dict_6.values()
print(r3) # 结果为:dict_values(['Emily', '18'])
# ------------items()
dict_7 = {"name": "Emily", "age": "18"}
r4 = dict_7.items()
print(r4) #结果为:dict_items([('name', 'Emily'), ('age', '18')])
# ------------clear()
dict_8 = {"name": "Emily", "age": "18"}
dict_8.clear()
print(dict_8) # 结果为:{}
# ------------copy()
dict_9 = {"name": "Emily", "age": "18"}
dict_10 = dict_9.copy()
del dict_9["name"]
print(dict_9) # 结果为:{'age': '18'}
print(dict_10) # 结果为:{'name': 'Emily', 'age': '18'},副本不会被影响
# ------------fromkeys()
dict_11 = {}
dict_12 = dict_11.fromkeys(("name", "age"))
print(dict_11) # 结果为:{}
print(dict_12) # 结果为:{'name': None, 'age': None},使用fromkeys()会新生成一个字典
dict_12_1 = dict_11.fromkeys(("name", "age"), 1)
print(dict_12_1) # 结果为:{'name': 1, 'age': 1}
dict_12_2 = dict_11.fromkeys(("name", "age"), (1, 2))
print(dict_12_2) # 结果为:{'name': (1, 2), 'age': (1, 2)},如果想分开赋别的值,需要用dict_name[key] = value
# ------------pop()
dict_13 = {"name": "Emily", "age": "18"}
r5 = dict_13.pop("name") # 有返回值,返回值为指定键对应的值
print(dict_13) # 结果为:{'age': '18'}
print(r5) # 结果为:Emily
# ------------popitem()
dict_14 = {"name": "Emily", "age": "18"}
r6 = dict_14.popitem()
print(dict_14) # 结果为:{'name': 'Emily'}
print(r6) # 结果为:('age', '18')
# ------------setdefault()
dict_15 = {"name": "Emily", "age": "18"}
dict_15.setdefault("skills", "Python")
print(dict_15) # 结果为:{'name': 'Emily', 'age': '18', 'skills': 'Python'}
dict_15 = {"name": "Emily", "age": "18"}
dict_15.setdefault("name", "Mike")
print(dict_15) # 结果为:{'name': 'Emily', 'age': '18', 'skills': 'Python'},并没有改变
dict_15_1 = {"name": "Emily","name": "Mike"}
print(dict_15_1) # 结果为:{'name': 'Mike'},存在重复键时,只保留重复键的最后一条键值对(覆盖了前面的)
# ------------update()
dict_16_1 = {"name": "Emily"}
dict_16_2 = {"name": "Alice"}
dict_16_1.update(dict_16_2)
print(dict_16_1) # 结果为:{'name': 'Alice'},覆盖了
dict_16_3 = {"age": 18}
dict_16_1.update(dict_16_3)
print(dict_16_1) # 结果为:{'name': 'Alice', 'age': 18}
3.7 Dictionary(字典)相关推荐
- List数组,string数组,Dictionary字典三种contain方法的查询速度
在生成随机不重复数时要判断生成的数是否已生成过,这时就要和原来生成的数进行比较是否有重复,有以下三种方法 1. list数组采用contains()方法 2.string数组采用contains()方 ...
- C#中的Dictionary字典类介绍
关键字:C# Dictionary 字典 作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-diction ...
- swift_005(Swift的Dictionary 字典)
1.Dictionary (可变不可变不区分了)字典 <Swift开发指南> // Swift 字典的key没有类型限制可以是整型或字符串,但必须是唯一的. var someDict:[ ...
- boost::contract模块实现dictionary字典的测试程序
boost::contract模块实现dictionary字典的测试程序 实现功能 C++实现代码 实现功能 boost::contract模块实现dictionary字典的测试程序 C++实现代码 ...
- 关于Dictionary字典和List列表
命名空间System.Collections.Generic中有两个非常重要,而且常用的泛型集合类,它们分别是Dictionary<TKey,TValue>字典和List<T> ...
- C#中的Dictionary字典类介绍(转载)
C#中的Dictionary字典类介绍 关键字:C# Dictionary 字典 作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/ ...
- (转)C#中的Dictionary字典类介绍
关键字:C# Dictionary 字典 作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-diction ...
- 你能熟练使用Dictionary字典和List列表吗?
命名空间System.Collections.Generic中有两个非常重要,而且常用的泛型集合类,它们分别是Dictionary<TKey,TValue>字典和List<T> ...
- 英文单词缩写----DXNRY – Dictionary 字典
由于英文的字母太多,不方便的时候发短信很慢,所以外国人很多都在短信上输入 缩写 ,这样就节省了很多时间.花了好久才把这些 缩写 给整理出来,唯一在这里需要说明的是,不是所有的人都明白这些 缩写 是什么 ...
- 【Python】数据类型 Number数字、String字符串、List列表、Tuple元组、Set集合、Dictionary字典
Python数据类型 2021/6/3 周四 学习内容: Python数据类型.Number(数字).String(字符串).List(列表).Tuple(元组).Set(集合).Dictionary ...
最新文章
- Mac OS 如何连接windows 文件共享
- explode() 字符串转换数组
- 阶段总结——201511
- 开源软件使用_消费开源软件:如何使用和购买
- 用jquery给Struts2的s:radio /标签添加change事件
- Linux下Qt5: QMediaRecorder的问题,以及使用QCamera相关类进行摄像头视频采集
- 从零开始学python必看,最强“Python编程三剑客(pdf)”,你值得拥有!
- 软件行业各职位英文缩写
- word页眉前后不一致怎么设置_如何设置页眉部分内容前后不同,页脚部分内容也前后不同的WORD文档?...
- java:解一元二次方程
- 【c++】如何获取int类型最大值以及float类型最大值
- gps有几个轨道面_GPS(全球定位系统)的 24 颗卫星的轨道是如何设计的?
- 星环科技数据治理与数据价值评估实践分享
- 云服务ftp服务器搭建_如何在阿里云服务器搭建FTP服务器,在本地电脑连接并操作...
- 时序数据取样方法_数据科学的抽样方法
- vue项目打包部署(Linux命令)
- 二战前线2 (commando2) flash 修改
- 技术干货|昇思MindSpore NLP模型迁移之Bert模型—文本匹配任务(二):训练和评估
- python+qt5项目管理系统开发_Qt5——从零开始的学生管理系统
- winRAR真难用,我决定自创一个(筑基期)适合无基础
热门文章
- 铜仁一中2021高考成绩查询,贵州铜仁第一中学2021年招生录取分数线
- 平安云:在群雄逐鹿的云市场中野蛮生长
- 列车运行图的编制原则是什么_列车运行图的编制有什么要求?
- 企业为什么要建网站?
- android gone动画_java – Android添加简单的动画,而setvisibility(view.Gone)
- OpenCV边界外推和边界处理
- WLAN框架应用笔记
- oca sci 计算机视觉,张启灿
- 让chrome浏览器变成在线编辑器
- zzulioj 1787: 生化危机 (vector+dfs) 好题