今天,已经系统的学习了一下文件相关操作!对三级菜单代码进行的优化:

菜单文件:以字典格式

menu.txt

  {'第一层':{'第二层':{'第三层':['内容1','内容2','内容3']}},'第一层2':{'第二层2':{'第三层2':['内容12','内容22','内容32']}}}

增加代码在开头如下:

  1. with open('menu.txt','r',encoding='utf-8') as f:
  2. info=eval(f.readline())#打开并转成字符

如以便得以实现菜单存在文件中!

同时学习了集合的使用:

  1. 1 list_1=[1,2,3,4,6,3,2]
  2. 2 print('原始列表1:',list_1)
  3. 3 list_2=[3,46,6,2]
  4. 4 print('原始列表2:',list_2)
  5. 5
  6. 6 list_1=set(list_1)#去重为集合
  7. 7 print('去重列表1:',list_1)
  8. 8
  9. 9 print('合并列表1、2后:',list_1.union(list_2))#两个列表合并去重
  10. 10 print('列表1与列表2的交集:',list_1.intersection(list_2))#两个列表有交集的元素
  11. 11 print('列表1差集列表2:',list_1.difference(list_2))#列表1减去在列表2中有出现的元素
  12. 12 print('列表1是否是列表2的子集:',list_1.issubset(list_2))#返回真、假
  13. 13 print('列表1是否是列表2的父集:',list_1.issuperset(list_2))#返回真、假
  14. 14 print('列表1与列表2无交集:',list_1.isdisjoint(list_2))#无交集返回真、有交集返回假
  15. 15 print('列表1与列表2的对称差集:',list_1.symmetric_difference(list_2))#列表1对列表2的差集加上列表2对列表1的差集的集合,即去除两个列表中交集元素

内容为

字典的用法英文
  1. #<字典>
  2. #help(dict)
  3. #
  4. #
  5. #字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
  6. #
  7. #字典的特性:dict是无序的,key必须是唯一的,所以天生去重。字典里没有下标
  8. #
  9. #key-value
  10. #号码(下标):内容(可以重复)
  11. #
  12.  
  13. print (' ')
  14. print ('-------------创建字典的方法壹-------------------')
  15. dict1 = {'num2': 'LongZe', 'num3': 'XiaoZe','num4':'Maliy','num5':'Jack','num6':'Hagan','num7':'Cahill'}
  16. print(dict1)
  17.  
  18. print (' ')
  19. print ('-------------创建字典的方法二-------------------')
  20. dict2 = dict(鱼='让编程改变',书='读嘟嘟',笔='写写写')
  21. print(dict2)
  22.  
  23. print (' ')
  24. print ('-------------创建字典的方法三-------------------')
  25. dict3 =dict((('f',70),('i',50),('s',111),('h',104)))
  26. print(dict3)
  27.  
  28. print(' ')
  29. print('------------------------字典增加-----------------')
  30. dict1['yyy'] = '追加字典'
  31. print(dict1)
  32.  
  33. print(' ')
  34. print('------------------------字典修改-----------------')
  35. dict2['鱼'] = '修改字典'
  36. print(dict2)
  37.  
  38. print(' ')
  39. print('------------------------字典删除方法壹-----------')
  40. dict1.pop('num3')
  41. print(dict1)
  42.  
  43. print(' ')
  44. print('-----------py通用方法---字典删除方法二-----------')
  45. del dict1['num4']
  46. print(dict1)
  47.  
  48. print(' ')
  49. print('------------字典删除方法三随机删除一个---------')
  50. dict1.popitem()
  51. print(dict1)
  52.  
  53. print(' ')
  54. print('------------------字典查找方法壹返回True---------')
  55. 'num2' in dict1
  56. print('num2' in dict1)
  57.  
  58. print(' ')
  59. print('---------------字典查找方法二----安全获取的方法--')
  60. cz = dict1.get("num2")
  61. print(cz)
  62.  
  63. print(' ')
  64. print('------------------字典查找方法三-----------------')
  65. dict1["num2"]
  66. print(dict1["num2"])
  67.  
  68. print ('如果一个key不存在,就报错,get不会,不存在只返回None')
  69.  
  70. print(' ')
  71. print(' ')

字典的用法

  1. #多级字典嵌套及操作
  2. av_catalog = {
  3. "欧美":{
  4. "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
  5. "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
  6. "letmedothis.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
  7. "x-aryrtyrtt.com": ["质量很高,真的很高","全部收费,屌比请绕过"]
  8. },
  9. "日韩":{
  10. "tokyo-hottuiyui": ["质量怎样不清楚","听说是收费的"]
  11. },
  12. "大陆":{
  13. "1024hkhkhkhkhkh": ["全部免费,真好,好人一生平安","服务器在国外,慢"]
  14. }
  15. }
  16.  
  17. av_catalog["大陆"][""][1] += ",可以用爬虫爬下来"
  18.  
  19. print(av_catalog["大陆"][""])
  20. #ouput
  21. ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']

多级字典嵌套及操作

  1. #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
  2. #字典的其它姿势
  3.  
  4. #values 打印不包括keys所有的值
  5. info.values()
  6. dict_values(['LongZe Luola', 'XiaoZe Maliya'])
  7.  
  8. #keys 打印所有keys的值
  9. info.keys()
  10. dict_keys(['stu1102', 'stu1103'])
  11.  
  12. #setdefault 创建一个新的值,寻找某值,寻找不到创建
  13. info.setdefault("stu1106","Alex")
  14. 'Alex'
  15. info
  16. {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
  17. info.setdefault("stu1102","龙泽萝拉")
  18. 'LongZe Luola'
  19. info
  20. {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
  21.  
  22. #update 合并两字典,交叉就覆盖,没有就添加。
  23. info
  24. {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
  25. b = {1:2,3:4, "stu1102":"龙泽萝拉"}
  26. info.update(b)
  27. info
  28. {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
  29.  
  30. #items 字典转成列表
  31. info.items()
  32. dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')])
  33.  
  34. #通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
  35. #初始一个新的字典,每个KEY用同一个值<值等于浅COPY,类似快捷方式>
  36. dict.fromkeys([1,2,3],'testd')
  37. {1: 'testd', 2: 'testd', 3: 'testd'}

字典的其它姿势

  1. #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎
  2. #循环dict<字典>
  3.  
  4. #方法1 #通过key寻找打印
  5. for key in info:
  6. print(key,info[key])
  7.  
  8. #方法2 #把字典转成列表,然后打印列表里的('k','v')
  9. for k,v in info.items(): #会先把dict转成list,数据大时莫用
  10. print(k,v)

循环dict<字典>

python第五天 字典的更多相关文章

  1. python基础五之字典

    python数据的可变性 通过数据的可变性,可将数据分为可变数据类型和不可变数据类型. 可变数据类型:list,dict (不可哈希) 不可变数据类型:元祖,bool,int,str (可哈希) py ...

  2. python 中 五种字典(dict)的遍历方法,实验法比较性能。

    1 .背景: 想知道5种遍历方法,并且知道从性能角度考虑,使用哪种. 2.结论: 使用这种方式: for key,val in AutoDict.iteritems(): temp = "% ...

  3. Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  4. Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块

    Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数  linecache模块 目录 Pycharm使用技巧( ...

  5. Python3基本数据类型(五、字典)

    一.定义 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号中: dic = {key: ...

  6. 简学Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  7. 孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务

    孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第五天.今天的感觉是,mongoDB数 ...

  8. 孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库

    孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第二 ...

  9. 孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档

    孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库 ...

随机推荐

  1. python 怎样获取toast?

    toast是什么? 想要获取toast的小伙伴们,肯定知道这个是一个什么玩意,例行还是加一个图,加以解释,下图的就是传说中的toast,它有一个特点,出现时间特别短,很难通过定位元素去获取这个toas ...

  2. 源码安装redis环境

    linux下安装redis 1.下载源码,解压包后编译源码: wget http://download.redis.io/releases/redis-2.8.3.tar.gz tar xzf red ...

  3. [java初探外篇]__关于StringBuilder类与String类的区别

    前言 我们前面学习到String类的相关知识,知道了它是一个字符串类,并且了解到其中的一些方法,但是当时并没有太过注意到String类的特点,今天就StringBuilder类的学习来比较一下两者的区 ...

  4. Kafka实战-KafkaOffsetMonitor

    1.概述 前面给大家介绍了Kafka的背景以及一些应用场景,并附带上演示了Kafka的简单示例.然后,在开发的过程当中,我们会发现一些问题,那就是消息的监控情况.虽然,在启动Kafka的相关服务后,我 ...

  5. TCP编程实践小结1

    说起TCP/IP协议,大家估计都能说出个一二,但是估计很少有人能够深入的理解这个协议,原因有这么几个: 协议本身确实复杂 入门教材没选对,太抽象了,导致大家浅尝辄止 学习过程中如果没有配合实践理解,过 ...

  6. Python机器学习笔记:深入理解Keras中序贯模型和函数模型

     先从sklearn说起吧,如果学习了sklearn的话,那么学习Keras相对来说比较容易.为什么这样说呢? 我们首先比较一下sklearn的机器学习大致使用流程和Keras的大致使用流程: skl ...

  7. Struts2学习(四)———— ognl表达式、值栈、actionContext之间的关系

    一.什么是Ognl? 通过百度百科查询到的解释,其中详细的说明了OGNL的作用. 下面我们就对OGNL这5个作用进行讲解 1.存取对象的任意属性,简单说就是对javabean进行操作(重要) 2.调用 ...

  8. ThreadPoolExecutor代码解析

    派生体系 java.util.concurrent ThreadPoolExecutor AbstractExecutorService ExecutorService Executor   这个类是 ...

  9. IdentityServer4 中文文档 -10- (快速入门)使用密码保护API

    IdentityServer4 中文文档 -10- (快速入门)使用密码保护API 原文:http://docs.identityserver.io/en/release/quickstarts/2_ ...

  10. MQTT再学习 -- MQTT 客户端源码分析

    MQTT 源码分析,搜索了一下发现网络上讲的很少,多是逍遥子的那几篇. 参看:逍遥子_mosquitto源码分析系列 参看:MQTT libmosquitto源码分析 参看:Mosquitto学习笔记 ...