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

菜单文件:以字典格式

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第五天 字典的更多相关文章

  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. [视频]K8飞刀 解密菜刀后门教程

    链接:https://pan.baidu.com/s/1raC1S_njxeqS7TaiTN6jLA 提取码:otmb

  2. 设置c++中cout输出的字体颜色

    在c++中控制台的默认字体颜色是白色,但是有时我们需要其他颜色,比如用红色提示错误,使用绿色提示计算完成,使用黄色表示警示等等,那么如何设置控制台文字的颜色呢? 一种方法是通过右键控制台进行颜色设置, ...

  3. Orange——开源机器学习交互式数据分析工具

    Orange为新手和专家提供开源机器学习和数据可视化.使用大型工具箱交互式数据分析工作流程. 交互式数据可视化 Orange的全部内容都是关于数据可视化,帮助发现隐藏的数据模式,提供数据分析过程背后的 ...

  4. JVM内存区域划分及垃圾回收

    第一部分.闲扯+概述 近来在研读<深入理解java虚拟机>一书,读完之后做个小结,算是记录一下自己的学习所得,在成长的路上,只能死磕. 要理解JVM,就要先从其内存区域划分开始,知道其由几 ...

  5. 网络IP地址

    IP地址分类 A类网络的IP地址范围为1.0.0.1-127.255.255.254: B类网络的IP地址范围为:128.1.0.1-191.255.255.254: C类网络的IP地址范围为:192 ...

  6. 在2018年如何优雅的开发一个typescript语言的npm包?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由小明plus发表 很多时候,我们可能想要用 typescript 语言来创建一些模块,并提交到 npm 供别人使用, 那么在 2018 ...

  7. c# 对象集合转Json

    /// <summary> /// 普通集合转换Json /// </summary> /// <param name="array">集合对象 ...

  8. jQuery 【选择器】【动画】

    jQuery 是一个快速.简洁的JavaScript框架,它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作.事件处理.动画设计和Ajax交互. ...

  9. hadoop 核心概念及入门

    Hadoop Hadoop背景 什么是HADOOP HADOOP是apache旗下的一套开源软件平台HADOOP提供利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理,HADOOP的核 ...

  10. 【Spring】24、<load-on-startup>0</load-on-startup>配置

    load-on-startup标记容器是否在启动的时候实例化并调用其init()方法的优先级. 它的值表示servlet应该被载入的顺序 当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个s ...