python第五天 字典
今天,已经系统的学习了一下文件相关操作!对三级菜单代码进行的优化:
菜单文件:以字典格式
menu.txt
{'第一层':{'第二层':{'第三层':['内容1','内容2','内容3']}},'第一层2':{'第二层2':{'第三层2':['内容12','内容22','内容32']}}}
增加代码在开头如下:
- with open('menu.txt','r',encoding='utf-8') as f:
- info=eval(f.readline())#打开并转成字符
如以便得以实现菜单存在文件中!
同时学习了集合的使用:
- 1 list_1=[1,2,3,4,6,3,2]
- 2 print('原始列表1:',list_1)
- 3 list_2=[3,46,6,2]
- 4 print('原始列表2:',list_2)
- 5
- 6 list_1=set(list_1)#去重为集合
- 7 print('去重列表1:',list_1)
- 8
- 9 print('合并列表1、2后:',list_1.union(list_2))#两个列表合并去重
- 10 print('列表1与列表2的交集:',list_1.intersection(list_2))#两个列表有交集的元素
- 11 print('列表1差集列表2:',list_1.difference(list_2))#列表1减去在列表2中有出现的元素
- 12 print('列表1是否是列表2的子集:',list_1.issubset(list_2))#返回真、假
- 13 print('列表1是否是列表2的父集:',list_1.issuperset(list_2))#返回真、假
- 14 print('列表1与列表2无交集:',list_1.isdisjoint(list_2))#无交集返回真、有交集返回假
- 15 print('列表1与列表2的对称差集:',list_1.symmetric_difference(list_2))#列表1对列表2的差集加上列表2对列表1的差集的集合,即去除两个列表中交集元素
内容为
- #<字典>
- #help(dict)
- #
- #
- #字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
- #
- #字典的特性:dict是无序的,key必须是唯一的,所以天生去重。字典里没有下标
- #
- #key-value
- #号码(下标):内容(可以重复)
- #
- print (' ')
- print ('-------------创建字典的方法壹-------------------')
- dict1 = {'num2': 'LongZe', 'num3': 'XiaoZe','num4':'Maliy','num5':'Jack','num6':'Hagan','num7':'Cahill'}
- print(dict1)
- print (' ')
- print ('-------------创建字典的方法二-------------------')
- dict2 = dict(鱼='让编程改变',书='读嘟嘟',笔='写写写')
- print(dict2)
- print (' ')
- print ('-------------创建字典的方法三-------------------')
- dict3 =dict((('f',70),('i',50),('s',111),('h',104)))
- print(dict3)
- print(' ')
- print('------------------------字典增加-----------------')
- dict1['yyy'] = '追加字典'
- print(dict1)
- print(' ')
- print('------------------------字典修改-----------------')
- dict2['鱼'] = '修改字典'
- print(dict2)
- print(' ')
- print('------------------------字典删除方法壹-----------')
- dict1.pop('num3')
- print(dict1)
- print(' ')
- print('-----------py通用方法---字典删除方法二-----------')
- del dict1['num4']
- print(dict1)
- print(' ')
- print('------------字典删除方法三随机删除一个---------')
- dict1.popitem()
- print(dict1)
- print(' ')
- print('------------------字典查找方法壹返回True---------')
- 'num2' in dict1
- print('num2' in dict1)
- print(' ')
- print('---------------字典查找方法二----安全获取的方法--')
- cz = dict1.get("num2")
- print(cz)
- print(' ')
- print('------------------字典查找方法三-----------------')
- dict1["num2"]
- print(dict1["num2"])
- print ('如果一个key不存在,就报错,get不会,不存在只返回None')
- print(' ')
- print(' ')
字典的用法
- #多级字典嵌套及操作
- av_catalog = {
- "欧美":{
- "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
- "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
- "letmedothis.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
- "x-aryrtyrtt.com": ["质量很高,真的很高","全部收费,屌比请绕过"]
- },
- "日韩":{
- "tokyo-hottuiyui": ["质量怎样不清楚","听说是收费的"]
- },
- "大陆":{
- "1024hkhkhkhkhkh": ["全部免费,真好,好人一生平安","服务器在国外,慢"]
- }
- }
- av_catalog["大陆"][""][1] += ",可以用爬虫爬下来"
- print(av_catalog["大陆"][""])
- #ouput
- ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']
多级字典嵌套及操作
- #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
- #字典的其它姿势
- #values 打印不包括keys所有的值
- info.values()
- dict_values(['LongZe Luola', 'XiaoZe Maliya'])
- #keys 打印所有keys的值
- info.keys()
- dict_keys(['stu1102', 'stu1103'])
- #setdefault 创建一个新的值,寻找某值,寻找不到创建
- info.setdefault("stu1106","Alex")
- 'Alex'
- info
- {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
- info.setdefault("stu1102","龙泽萝拉")
- 'LongZe Luola'
- info
- {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
- #update 合并两字典,交叉就覆盖,没有就添加。
- info
- {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
- b = {1:2,3:4, "stu1102":"龙泽萝拉"}
- info.update(b)
- info
- {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
- #items 字典转成列表
- info.items()
- dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')])
- #通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
- #初始一个新的字典,每个KEY用同一个值<值等于浅COPY,类似快捷方式>
- dict.fromkeys([1,2,3],'testd')
- {1: 'testd', 2: 'testd', 3: 'testd'}
字典的其它姿势
- #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
- #循环dict<字典>
- #方法1 #通过key寻找打印
- for key in info:
- print(key,info[key])
- #方法2 #把字典转成列表,然后打印列表里的('k','v')
- for k,v in info.items(): #会先把dict转成list,数据大时莫用
- print(k,v)
循环dict<字典>
python第五天 字典的更多相关文章
- python基础五之字典
python数据的可变性 通过数据的可变性,可将数据分为可变数据类型和不可变数据类型. 可变数据类型:list,dict (不可哈希) 不可变数据类型:元祖,bool,int,str (可哈希) py ...
- python 中 五种字典(dict)的遍历方法,实验法比较性能。
1 .背景: 想知道5种遍历方法,并且知道从性能角度考虑,使用哪种. 2.结论: 使用这种方式: for key,val in AutoDict.iteritems(): temp = "% ...
- Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块
Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块 目录 Pycharm使用技巧( ...
- Python3基本数据类型(五、字典)
一.定义 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号中: dic = {key: ...
- 简学Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- 孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务
孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第五天.今天的感觉是,mongoDB数 ...
- 孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库
孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第二 ...
- 孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档
孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库 ...
随机推荐
- python 怎样获取toast?
toast是什么? 想要获取toast的小伙伴们,肯定知道这个是一个什么玩意,例行还是加一个图,加以解释,下图的就是传说中的toast,它有一个特点,出现时间特别短,很难通过定位元素去获取这个toas ...
- 源码安装redis环境
linux下安装redis 1.下载源码,解压包后编译源码: wget http://download.redis.io/releases/redis-2.8.3.tar.gz tar xzf red ...
- [java初探外篇]__关于StringBuilder类与String类的区别
前言 我们前面学习到String类的相关知识,知道了它是一个字符串类,并且了解到其中的一些方法,但是当时并没有太过注意到String类的特点,今天就StringBuilder类的学习来比较一下两者的区 ...
- Kafka实战-KafkaOffsetMonitor
1.概述 前面给大家介绍了Kafka的背景以及一些应用场景,并附带上演示了Kafka的简单示例.然后,在开发的过程当中,我们会发现一些问题,那就是消息的监控情况.虽然,在启动Kafka的相关服务后,我 ...
- TCP编程实践小结1
说起TCP/IP协议,大家估计都能说出个一二,但是估计很少有人能够深入的理解这个协议,原因有这么几个: 协议本身确实复杂 入门教材没选对,太抽象了,导致大家浅尝辄止 学习过程中如果没有配合实践理解,过 ...
- Python机器学习笔记:深入理解Keras中序贯模型和函数模型
先从sklearn说起吧,如果学习了sklearn的话,那么学习Keras相对来说比较容易.为什么这样说呢? 我们首先比较一下sklearn的机器学习大致使用流程和Keras的大致使用流程: skl ...
- Struts2学习(四)———— ognl表达式、值栈、actionContext之间的关系
一.什么是Ognl? 通过百度百科查询到的解释,其中详细的说明了OGNL的作用. 下面我们就对OGNL这5个作用进行讲解 1.存取对象的任意属性,简单说就是对javabean进行操作(重要) 2.调用 ...
- ThreadPoolExecutor代码解析
派生体系 java.util.concurrent ThreadPoolExecutor AbstractExecutorService ExecutorService Executor 这个类是 ...
- IdentityServer4 中文文档 -10- (快速入门)使用密码保护API
IdentityServer4 中文文档 -10- (快速入门)使用密码保护API 原文:http://docs.identityserver.io/en/release/quickstarts/2_ ...
- MQTT再学习 -- MQTT 客户端源码分析
MQTT 源码分析,搜索了一下发现网络上讲的很少,多是逍遥子的那几篇. 参看:逍遥子_mosquitto源码分析系列 参看:MQTT libmosquitto源码分析 参看:Mosquitto学习笔记 ...