博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 基础篇:字典、集合、文件操作
阅读量:4992 次
发布时间:2019-06-12

本文共 5397 字,大约阅读时间需要 17 分钟。

字典

字典一种key - value 的数据类型

1. 语法:

info = {    'stu1101': "TengLan Wu",    'stu1102': "LongZe Luola",    'stu1103': "XiaoZe Maliya",}

2. 字典的特性:

  • dict是无序的
  • key必须是唯一的,so 天生去重

3. 操作

增加

>>> info["stu1104"] = "苍井空">>> info{'stu1102': 'LongZe Luola', 'stu1104': '苍井空', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu'}

修改

>>> info['stu1101'] = "武藤兰">>> info{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'}

删除

>>> info{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'}>>> info.pop("stu1101") #标准删除姿势'武藤兰'>>> info{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}>>> del info['stu1103'] #换个姿势删除>>> info{'stu1102': 'LongZe Luola'}>>> >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}>>> info{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} #随机删除>>> info.popitem()('stu1102', 'LongZe Luola')>>> info{'stu1103': 'XiaoZe Maliya'}

查找

>>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}>>> >>> "stu1102" in info #标准用法True>>> info.get("stu1102")  #获取'LongZe Luola'>>> info["stu1102"] #同上,但是看下面'LongZe Luola'>>> info["stu1105"]  #如果一个key不存在,就报错,get不会,不存在只返回NoneTraceback (most recent call last):  File "
", line 1, in
KeyError: 'stu1105'

多级字典嵌套及操作

av_catalog = {    "欧美":{        "www.youporn.com": ["很多免费的,世界最大的","质量一般"],        "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],        "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],        "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]    },    "日韩":{        "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]    },    "大陆":{        "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]    }}av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"print(av_catalog["大陆"]["1024"])#ouput ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']

获取 values

>>> info.values()dict_values(['LongZe Luola', 'XiaoZe Maliya'])

获取keys

>>> info.keys()dict_keys(['stu1102', 'stu1103'])

设置默认值

>>> 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'}

更新

>>> 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'}

获取项

info.items()dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')])

循环dict

#方法1for key in info:    print(key,info[key])#方法2for k,v in info.items(): #会先把dict转成list,数据里大时莫用    print(k,v)

程序: 三级菜单

要求:

  • 打印省、市、县三级菜单
  • 可返回上一级
  • 可随时退出程序
menu = {    '北京':{        '海淀':{            '五道口':{                'soho':{},                '网易':{},                'google':{}            },            '中关村':{                '爱奇艺':{},                '汽车之家':{},                'youku':{},            },            '上地':{                '百度':{},            },        },        '昌平':{            '沙河':{                '北航':{},            },            '天通苑':{},            '回龙观':{},        },        '朝阳':{},        '东城':{},    },    '上海':{        '闵行':{            "人民广场":{                '炸鸡店':{}            }        },        '闸北':{            '火车战':{                '携程':{}            }        },        '浦东':{},    },    '山东':{},}exit_flag = Falsecurrent_layer = menulayers = [menu]while not  exit_flag:    for k in current_layer:        print(k)    choice = input(">>:").strip()    if choice == "b":        current_layer = layers[-1]        #print("change to laster", current_layer)        layers.pop()    elif choice not  in current_layer:continue    else:        layers.append(current_layer)        current_layer = current_layer[choice]

集合

集合是一个无序的,不重复的数据组合,它的主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系

常用操作

s = set([3,5,9,10])      #创建一个数值集合    t = set("Hello")         #创建一个唯一字符的集合  a = t | s          # t 和 s的并集    b = t & s          # t 和 s的交集    c = t – s          # 求差集(项在t中,但不在s中)    d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)         基本操作:    t.add('x')            # 添加一项    s.update([10,37,42])  # 在s中添加多项         使用remove()可以删除一项:    t.remove('H')      len(s)  set 的长度    x in s  测试 x 是否是 s 的成员    x not in s  测试 x 是否不是 s 的成员    s.issubset(t)  s <= t  测试是否 s 中的每一个元素都在 t 中    s.issuperset(t)  s >= t  测试是否 t 中的每一个元素都在 s 中    s.union(t)  s | t  返回一个新的 set 包含 s 和 t 中的每一个元素    s.intersection(t)  s & t  返回一个新的 set 包含 s 和 t 中的公共元素    s.difference(t)  s - t  返回一个新的 set 包含 s 中有但是 t 中没有的元素    s.symmetric_difference(t)  s ^ t  返回一个新的 set 包含 s 和 t 中不重复的元素    s.copy()  返回 set “s”的一个浅复制

文件操作

对文件操作流程

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件

现有文件如下

Somehow, it seems the love I knew was always the most destructive kind不知为何,我经历的爱情总是最具毁灭性的的那种Yesterday when I was young昨日当我年少轻狂The taste of life was sweet生命的滋味是甜的As rain upon my tongue就如舌尖上的雨露I teased at life as if it were a foolish game我戏弄生命 视其为愚蠢的游戏

基本操作

f = open('lyrics') #打开文件first_line = f.readline()print('first line:',first_line) #读一行print('我是分隔线'.center(50,'-'))data = f.read()# 读取剩下的所有内容,文件大时不要用print(data) #打印文件 f.close() #关闭文件

打开文件的模式有:

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【可读; 不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  • rU
  • r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab

转载于:https://www.cnblogs.com/warkly/p/6009977.html

你可能感兴趣的文章
hdu 1010(DFS) 骨头的诱惑
查看>>
(转)Android SDK Manager国内无法更新的解决方案
查看>>
SQL语句修改表
查看>>
ubutnu 挂载磁盘
查看>>
continue 和 break的实例
查看>>
Java学习笔记()ArrayList
查看>>
redis缓存清除
查看>>
django Highcharts制作图表--显示CPU使用率
查看>>
文本处理 tr ,col,join,paste
查看>>
oracle权限
查看>>
java方法的虚分派和方法表
查看>>
【转】字符串和浮点数格式化输出小结
查看>>
Android开发 - Retrofit 2 使用自签名的HTTPS证书进行API请求
查看>>
对测试人员或开发人员来说相互沟通有多重要?
查看>>
解释器、编译器以及他们之间的差别。
查看>>
MongoDB的快速手动安装
查看>>
JS制作简单的日历控件【JS Date对象操作实例演示】
查看>>
模板—树上倍增LCA
查看>>
高二小假期集训—D5
查看>>
EasyUI easyui-combobox 重复发送请求
查看>>