我的Python自学之路-002 字典的知识
'''
字典是python中唯一的验证类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算。
根据计算的结果决定value的存储地址。所以字典是无序存储的。且key必须是可哈希的。可哈希表示key必须是不
可变类型。如:数字,字符串,元组。 字典是除列表以外,python中最灵活的内置数据结构类型,列表是有序的对象结合。字典是无序的对象集合。
两者的区别在于:字典中的元素是通过键来存取的,而不是通过偏移存取。
'''
#不可变类型:整型,字符串,元组
#可变类型:列表,字典
#1.字典的创建,字典中的key是不可改变的。因此列表,字典不能做字典中的键,只能用整型,字符串,元组来做key
dic1 = {'name':'张三','age':27,'sex':'male'} #冒号前面的是key,后面的是value
dic2 = {[1,2,3]:"张三",'age':27,'sex':'male'} #列表[1,2,3]不能做key,TypeError: unhashable type: 'list'
dic3 = {'name':'张三','age':27,'sex':'male','hobby':{'name':'ceshi','age':45}} #字典可以做字典中的值
dic2 = dict((('name','alex'),)) #一般不适用,太麻烦
#字典的两大特点:无序,键唯一
#2.操作字典
#(1).增加 如果键存在,则会改变原来字典中的该键对应的值,如果键不存在,则新增一个键值对
#直接在原字典后面跟一个[],赋给[]中键一个值
dic1 = {'name':'Alex'}
dic1['age'] = 18
dic1['name']=18
print(dic1)
#使用setdefault方法,setdefault方法有返回值。
ret1 = dic1.setdefault('age',34) #如果字典中有这个键,则原来的键不做任何的变动。返回字典中相应的键值。
print(ret1)
ret2 = dic1.setdefault('hobby','girl') #如果没有这个键,则则在字典中新增一个键值对,并返回相应的值。
print(ret2)
print(dic1)
#(2).查 通过键查找。
dic3 = {'name':'张三','age':27,'sex':'male'}
print(dic3['name'])
#打印一个字典中有哪些键
print(dic3.keys())
print(type(dic3.keys()))
#将dict_keys类型转换成list类型
print(list(dic3.keys())) #取出所有的键
print(list(dic3.values())) #取出所有的值
print(list(dic3.items())) #取出所有的键值对
#(3).改
dic3 = {'name':'张三','age':27,'sex':'male'}
dic3['name'] = 'Alex'
print(dic3)
dic4 = {'name':'张三','age':27,'sex':'male'}
dic5 = {'':'','':''}
dic4.update(dic5) #类似于列表中的extend方法,如果原来的字典中有相应的键,则更新原键值,如果没有,则添加新的键值对。
print(dic4)
print(dic5)
#(4).删
dic5 = {'name':'Maren','age':27,'sex':'male'}
del dic5['name'] #del删除的是一个键值对
print(dic5) dic5 = {'name':'Maren','age':27,'sex':'male'}
dic5.clear() #clear 清空整个字典,剩下一个空字典
print(dic5) dic5 = {'name':'Maren','age':27,'sex':'male'}
print(dic5.pop('age')) #pop返回被删除的键值对的值
print(dic5) dic5 = {'name':'Maren','age':27,'sex':'male'}
a = dic5.popitem() #随机删除某组键值对,并以元组的方式返回值
print(a,dic5) dic5 = {'name':'Maren','age':27,'sex':'male'}
del dic5 #从内存中清空了整个字典,运行会报错。
print(dic5)
#(5).其他操作以及涉及到的方法
#5.1.dict.fromkeys() 基本不用
dic6 = dict.fromkeys(['host1','host2','host3'],'test') #所有键都给指定同一个值:test
print(dic6) dic6 = dict.fromkeys(['host1','host2','host3'],['test1','test2'])
print(dic6)
dic6['host2'][1] = 'Alex'
print(dic6) #{'host1': ['test1', 'Alex'], 'host2': ['test1', 'Alex'], 'host3': ['test1', 'Alex']}
#5.2 d.copy() 对字典d进行浅复制,返回一个和d有相同键值对的新字典,后面重点讲解
#5.3 字典的嵌套
#汽车品牌
car = {
"美国":{
"别克":["SUV的自动停车功能好","车比较肉"],
"凯迪拉克":["车标酷炫","百公里加速性不好"],
"道奇":["有皮卡,性能好","在国外卖不动"],
"悍马":["安全性能极高","太贵了"]
},
"日本":{
"本田":["油耗低","安全性能差"],
"丰田":["提速快","车型不好看"]
},
"中国":{
"红旗":["车型好看","定价高"],
"传祺":["价格适中","质量有问题"]
}
} #修改别克的质量,车不肉了
car["美国"]["别克"][1] = "车不肉了,做了改进"
print(car)
#5.4 字典的排序
# sorted(dict):返回一个有序的包含字典所有key的列表
dic = {5:"",3:"",8:"",4:""}
print(dic)
print(sorted(dic))
print(sorted(dic.keys()))
print(sorted(dic.values()))
print(sorted(dic.items()))
#5.5 字典的遍历
#字典的遍历非常重要,多练习
dic5 = {'name':'Maren','age':27,'sex':'male'} for i in dic5: #默认循环遍历字典的键
print(i)
print("--------------------------")
#如何遍历字典中的键和值
#1.通过键值,取值.推荐使用这种方法
for i in dic5:
print(i,dic5[i])
print("--------------------------")
#2.遍历字典的items
for i in dic5.items():
print(i)
print("--------------------------")
#3.通过枚举取值
for i,v in dic5.items():
print(i,v)
我的Python自学之路-002 字典的知识的更多相关文章
- 我的Python自学之路-003 字符串的知识
'''字符串是以引号或者单引号括起来的任意文本,例如"123","asdfjk",'adfa'引号或者单引号,只是一种表示方法,并不是字符串的一部分如果字符串本 ...
- 我的Python自学之路-001 列表的知识
#_date_:2020/9/11 '''列表和字典是python中用的最多的数据类型 假如要存储一个班级的人名,需要怎么做?有这么几种方法:1.定义很多个变量: name0 = 'wucaho' n ...
- Python自学之路---Day13
目录 Python自学之路---Day13 常用的三个方法 匹配单个字符 边界匹配 数量匹配 逻辑与分组 编译正则表达式 其他方法 Python自学之路---Day13 常用的三个方法 1.re.ma ...
- Python自学之路---Day01
目录 Python自学之路---Day01 注释 单行注释 多行注释 print()函数 语法 参数 实例 input()函数 语法 参数 实例 查看Python的关键字 代码 变量与常量 变量 如何 ...
- python 自学之路-Day Two
Day1补充部分 模块初识 模块就是由其他人写好的功能,在程序需要的时候进行导入,直接使用,也叫库. 库有标准库和第三方库,所谓标准库,就是不需要安装就可以直接使用的,自带的:第三方库,就是需要进行下 ...
- python 自学之路-Day one
一.Python介绍 创始人吉多范罗苏姆(龟叔),脚本解释程序 应用领域广,数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等. 主要应用领域: 云计算:OpenStack: WEB开发:经 ...
- Python自学之路
2020年春节,受新型冠状病毒影响,整个春节假期,全国人民都在恐慌之中,为了避免大家上班相互传染,公司号召国家政策,开始上班日期延迟,在家呆的实在太无聊,突然感觉自己不能浪费这美好的时光,决定学习Py ...
- Python自学教程7:字典类型有什么用
字典是Python中的一个重要操作,如果字典玩得顺,很多其他的数据类型就可以一通百通. Python字典的定义 字典使用一对大括号进行定义,键值对之间使用逗号隔开,键和值使用冒号分隔. 键必须是不可变 ...
- Python自学之路——自定义简单装饰器
看了微信公众号推送的一道面试题,发现了闭包的问题,学习时间短,从来没有遇到过这种问题,研究一下. Python函数作用域 global:全局作用域 local:函数内部作用域 enclosing:函数 ...
随机推荐
- 树莓派搭建网站wordpress的url写错 问题解决方法 有效GUI方法
这个时候wordpress的后台已经登陆不了了,所以要对数据库做一些改变. 先说一下我是跟b站韩博士学的,LNMP.如果我们用的不一个方法的话下面就不用看了.下面是具体方法: 1 浏览器登录phpm ...
- 详解Apache Hudi如何配置各种类型分区
1. 引入 Apache Hudi支持多种分区方式数据集,如多级分区.单分区.时间日期分区.无分区数据集等,用户可根据实际需求选择合适的分区方式,下面来详细了解Hudi如何配置何种类型分区. 2. 分 ...
- Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.catherine.forrealm.about_utils.RealmHelper.findAllStudent()' on a null object reference
报错: 解决方法: private RealmHelper realm_search = new RealmHelper(); 进而发现在写RecyclerView时,遗漏如下代码: recy_sea ...
- 『JWT』,你必须了解的认证登录方案
我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...
- 从零开始讲解JavaScript中作用域链的概念及用途
从零开始讲解JavaScript中作用域链的概念及用途 引言 正文 一.执行环境 二.作用域链 三.块级作用域 四.其他情况 五.总结 结束语 引言 先点赞,再看博客,顺手可以点个关注. 微信公众号搜 ...
- JavaScript学习系列博客_7_JavaScript中的逻辑运算符、三元运算符
逻辑运算符 ! 非 - 非运算可以对一个布尔值进行取反,true变false false边true - 当对非布尔值使用!时,会先将其转换为布尔值然后再取反 - 我们可以利用 !! 来将其他的数据类型 ...
- 【接口自动化】Python+Requests接口自动化测试框架搭建【三】
经过上两篇文章的讲解,我们已经完成接口自动化的基础框架,现在开始根据实际项目丰满起来. 在PyCharm中新建项目,项目工程结构如下: config:配置文件夹,可以将一些全局变量放于配置文件中,方便 ...
- 基于 abp vNext 微服务开发的敏捷应用构建平台 - 设计构想
许多中小企业的管理模式都是在自身的发展过程中不断摸索,逐步建立起来的,每一家都有其独有的管理模式,而且随着企业的不断发展,管理模式也在不断变化中.企业在发展壮大的过程中离不开信息化系统的支撑,企业在构 ...
- Object中toString方法
在Java中,所有的对象都是继承自Object,自然继承了toString方法,在当使用System,out.println()里面为一个对象的引用时,自动调用toString方法将对象打印出来.如果 ...
- filebeat 启动失败
最近在ELK架构中启动filebeat时,启动失败,检查启动节点不存在 查看/var/log/message中报错日志,有如下内容 filebeat: Exiting:error loading co ...