day05

字典

字典—— dict:

字典无序的,可变的数据类型

用于存储大量数据,字典要比列表快,将数据和数据之间进行关联

  1. lst1 = ['常鑫','李文虎','张宇'] # 姓名
  2. lst2 = [10,80,100] # 分数
  3. print(lst1[0],lst[0])

逗号分隔叫做一个元素

{键 : 值,键 : 值} ——键值对

字典以散列表和哈希表存储

字典的键必须是可哈希的——不可变的数据类型——避免哈希冲突使用了(开放寻址法)

不可哈希的——可变的数据类型:列表

要求唯一——如果有重复的后面的将前面的覆盖

字典的值:可以任意

  1. 定义:dic = {}
  2. dic = {"常鑫":10,"李文虎":80,"张宇":100,10:"大黑哥",True:123,(1,2,3):"大煎饼",[1,2]:"meet"}
  3. print(dic)

字典的增加

  • dic['10'] = 89 : 暴力添加
  1. dic = {'常鑫':[1,2,3],'李文虎':'89'}
  2. dic['李文虎'] = 99
  3. print(dic)
  • dic.setdefault('内容':'内容') :

用李文虎这个键去字典进行查询,如果不存在就执行添加,如果存在就不添加

  1. dic = {'常鑫':[1,2,3],'李文虎':'89'}
  2. dic.setdefault('李文虎':'99')
  3. print(dic)
  4. print(dic.setdefault('李文虎'))

字典的删除

  • del dic[键] :通过字典的键删除键值对
  1. dic = {'常鑫':[1,2,3],'李文虎':'89'}
  2. del dic['常鑫']
  3. print(dic)
  • dic.pop(键) :通过字典的键删除键值对

也有返回值:返回的是被删除的值

  1. dic = {'常鑫':[1,2,3],'李文虎':'89'}
  2. print(dic.pop('常鑫'))
  3. print(dic)
  • dic.clear() :清空
  1. dic = {'常鑫':[1,2,3],'李文虎':'89'}
  2. dic.clear()
  3. print(dic)

字典的改

  • dic[键] = 值 : 字典中没有这个键值对,就是添加,有的时候就是修改
  1. dic = {'常鑫':[1,2,3],'李文虎':'89'}
  2. dic['常鑫'] = 'dsb'
  3. print(dic)
  • dic.update(字典) :update括号中的级别高于update前面的字典,有一样就更改值,如果没有就添加在后面
  1. dic = {"常鑫":[1,2,3],'李文虎': '89'}
  2. dic1 = {"1":3,"5":9,"李文虎":100}
  3. dic1.update(dic)
  4. print(dic1)

字典的查

  • for循环获取的是字典中每个键值对的键
  1. dic = {"常鑫":[1,2,3],'李文虎': '89'}
  2. for i in dic:
  3. print(i)
  • dic.get(键):通过键获取值,如果不存在就返回None
  1. dic = {"常鑫":[1,2,3],'李文虎': '89'}
  2. print(dic.get('常鑫'))# 结果是[1,2,3]
  3. dic = {"常鑫":[1,2,3],'李文虎': '89'}
  4. print(dic.get('cx'))# 结果是None
  • dic[键] (建议不使用): 通过键获取值,如果不存在就报错
  1. dic = {"常鑫":[1,2,3],'李文虎': '89'}
  2. print(dic['常鑫']) # 结果是[1,2,3]
  3. dic = {"常鑫":[1,2,3],'李文虎': '89'}
  4. print(dic['cx']) # 报错

其他操作

  1. dic = {"1":3,"5":9,"李文虎":100}
  2. for i in dic:
  3. print(i,dic.get(i)) # 获取所有键和值
  • dic.keys() : 把键获取到高仿列表里,支持for循环,不支持索引

print(list(dic.keys())) # 获取到列表

  1. dic1 = {"1":3,"5":9,"李文虎":100}
  2. print(dic.keys()) # 结果是:高仿列表—— dic_keys(['1','5','李文虎'])
  3. # 获取字典中所有的键
  4. for i in dic.keys():
  5. print(i)
  6. # 获取字典中所有的值
  7. lst = []
  8. for i in dic:
  9. lst.append(dic[i])
  10. print(lst)
  • dic.values() :把值获取到高仿列表里,支持for循环,不支持索引

print(list(dic.values())) # 获取到列表

  1. dic1 = {"1":3,"5":9,"李文虎":100}
  2. # 获取字典中所有的值
  3. print(list(dic.values())) # 结果是[3, 9, 100]
  • dic.items() : 把键和值组成的元组获取到高仿列表里,支持for循环,不支持索引

print(list(dic.items())) # 获取到列表

  1. dic1 = {"1":3,"5":9,"李文虎":100}
  2. print(dic.items())
  3. # 结果是dict_items([('1', 3), ('5', 9), ('李文虎', 100)])
  4. # 获取字典的键和值
  5. for i in dic.items():
  6. print(i[0],i[1])
  7. dic1 = {"1":3,"5":9,"李文虎":100}
  8. for i in dic1.items():
  9. print(i)
  10. # 结果是
  11. ('1', 3)
  12. ('5', 9)
  13. ('李文虎', 100)
  14. for k,v in dic1.items():
  15. print(k,v) # 获取每个元素的键和值
  16. # 结果是:
  17. 1 3
  18. 5 9
  19. 李文虎 100

解构

  1. a, b = 10,12
  2. print(a)
  3. print(b)
  4. # 结果是
  5. # 10
  6. # 12
  7. # 面试题
  8. a = 10
  9. b = 20
  10. a,b = b,a
  11. print(a,b) # 结果:20 10
  12. a,b = [1,2]
  13. print(a,b)
  14. # 结果是 1 2
  15. a,b = (3,4)
  16. print(a,b)
  17. # 结果是: 1 2
  18. a,b = "23"
  19. print(a,b) # 结果是: 2 3
  20. 工作之后可能会遇见
  21. a,_,b = (3,4,5)
  22. print(a,b) # 等号后边的值和前面的变量名要一一对应
  23. a = 10,12 # 本质就是一个元组
  24. print(a) # 结果是 (10,12)
  25. a,b = {"1":"a","2":"b"} # 得到的是键
  26. print(a,b) # 结果是 1 2

字典的嵌套

通过键一层一层的查找

  1. # dic = {1001:["周杰伦","林俊杰"],
  2. # 1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},
  3. # 1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},
  4. # 1004:{"韦小宝":[{"教主夫人":["教主"]},
  5. # {"阿珂":"刺客"},
  6. # {"双儿":"天地会"},
  7. # {"爱心觉罗建宁":"公主"},
  8. # {"独臂神尼":{"韦小宝师父":{"兰陵王":"隐身"},"花木兰":[
  9. # "唧唧复唧唧","木兰是战士",{"爸爸":["花和尚"]}]
  10. # }},
  11. # {"陈圆圆":"丈母娘"},{"穆建平":"小郡主"}]},
  12. # 1005:{"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]}
  13. # }
  14. # print(dic)
  15. # print(dic[1004]["韦小宝"][0]["教主夫人"][0])
  16. # print(dic[1005]["常鑫"][-1])
  17. # print(dic[1002]["汪峰"]["前妻2"][-1])
  18. # print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])
  19. # print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])

day05——字典的更多相关文章

  1. day05 字典

    今日内容(dict) 1.基本格式 2.独有方法 3.公共 4.强制转换 1.基本格式 字典(可变类型,3.6之后是有序) 帮助用户去表示一个事物的信息(事物是有多个属性) 键值不能为集合,列表,字典 ...

  2. python day05字典

    一.字典 1.字典的结构: a={key:value,key2:value},key是不可变的,value是可变的. 例子:dic = {123: 456, True: 999, "id&q ...

  3. day05 字典 dict

    今日内容: 字典 成对的保存数据. 以key:value的形式保存 用{}表示,每一项内容都是key:value, 每项数据之间用逗号隔开 字典中的key是不能重复的. 存储是依靠着key来计算的. ...

  4. 记录我的 python 学习历程-Day05 字典/字典的嵌套

    一.字典的初识 为什么要有字典 字典与列表同属容器型数据类型,同样可以存储大量的数据,但是,列表的数据关联性不强,并且查询速度比较慢,只能按照顺序存储. 什么是字典 先说一下什么叫可变与不可变的数据类 ...

  5. Python全栈--目录导航

    这里更新以Python语言作为基础,想要成为全栈工程师需要掌握的技能... Python基础语法 day01 初识Python day02 while循环 运算符和编码 day03 字符串 day04 ...

  6. python学习之旅

    python学习分类 python基础    +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...

  7. 22期老男孩Ptython全栈架构师视频教程

    老男孩Ptython全栈架构师视频教程 Python最新整理完整版22期视频教程 超60G课程容量<ignore_js_op> <ignore_js_op> <ignor ...

  8. 【DG】Oracle_Data_Guard官方直译

    [DG]Oracle Data Guard官方直译 1 Oracle Data Guard 介绍   Oracle Data Guard概念和管理10g版本2   Oracle Data Guard ...

  9. DVWA实验之Brute Force(暴力破解)- Low

    DVWA实验之Brute Force-暴力破解- Low     这里开始DVWA的相关实验~   有关DVWA环境搭建的教程请参考: https://www.cnblogs.com/0yst3r-2 ...

随机推荐

  1. 解决eclipse打开文件乱码

    解决办法 需要设置的几处地方为: Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8 W ...

  2. Ext学习之路——Ext.application

    Ext.application({ name: 'MyApp', launch: function() { Ext.create('Ext.container.Viewport', { items: ...

  3. JPA笔记3 OneToOne

    package one_to_one; import javax.persistence.Entity; import javax.persistence.FetchType; import java ...

  4. APP弱网测试方法

    常用工具 •利用抓包工具   -Fiddler/Charles•使用chrome浏览器的开发者工具•使用手机自带的限速功能(只适用IOS设备)•需要硬件设备(路由器或者网卡)   -NEWT/ATC/ ...

  5. 如何下载windows版的kubectl.exe文件

    github上的下载链接,不能直接下载. https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.14.md#client-b ...

  6. linux (08) nginx入门详解

    一. nginx 入门 nginx 入门学习 web服务器软件 windows IIS服务器 linux nginx apache 收费​lighthttp 公司的技术栈 收费版技术栈 apache ...

  7. JS高阶---进程与线程

    [大纲] 二级大纲: 三级大纲: [主体] (1)进程process 如下所示,两者内存空间相互独立 (2)线程thread (3)图解 注意:有的程序是多进程的,有的时单进程的 (4)单线程与多线程 ...

  8. Qt工程管理

    Qt Creator工程管理Qt Creator以工程项目的方式对源码进行管理一个Qt Creator工程包含不同类型的文件 .pro项目描述文件.pro.user用户配置描述文件 //由Qt Cre ...

  9. flask中利用session实现用户记住密码

    “记住密码”的实质,实际上就是把cookie的有效期设置的长一点,当用户没有选择记住密码时,cookie的有效期为会话结束,选择记住密码后,会根据服务器的设置延长cookie的有效期,默认是31天.在 ...

  10. rsync+inotify同步备份

    1.rsync与scp区别 scp无法备份大量数据,先统计文件信息,后进行拷贝,如果文件大小超出磁盘空间,则无法拷贝 rsync边复制,边比较,边统计 2.rsync特点 (1.)支持增量备份 (2. ...