day05——字典
day05
字典
字典—— dict:
字典无序的,可变的数据类型
用于存储大量数据,字典要比列表快,将数据和数据之间进行关联
lst1 = ['常鑫','李文虎','张宇'] # 姓名
lst2 = [10,80,100] # 分数
print(lst1[0],lst[0])
逗号分隔叫做一个元素
{键 : 值,键 : 值} ——键值对
字典以散列表和哈希表存储
字典的键必须是可哈希的——不可变的数据类型——避免哈希冲突使用了(开放寻址法)
不可哈希的——可变的数据类型:列表
要求唯一——如果有重复的后面的将前面的覆盖
字典的值:可以任意
定义:dic = {}
dic = {"常鑫":10,"李文虎":80,"张宇":100,10:"大黑哥",True:123,(1,2,3):"大煎饼",[1,2]:"meet"}
print(dic)
字典的增加
- dic['10'] = 89 : 暴力添加
dic = {'常鑫':[1,2,3],'李文虎':'89'}
dic['李文虎'] = 99
print(dic)
- dic.setdefault('内容':'内容') :
用李文虎这个键去字典进行查询,如果不存在就执行添加,如果存在就不添加
dic = {'常鑫':[1,2,3],'李文虎':'89'}
dic.setdefault('李文虎':'99')
print(dic)
print(dic.setdefault('李文虎'))
字典的删除
- del dic[键] :通过字典的键删除键值对
dic = {'常鑫':[1,2,3],'李文虎':'89'}
del dic['常鑫']
print(dic)
- dic.pop(键) :通过字典的键删除键值对
也有返回值:返回的是被删除的值
dic = {'常鑫':[1,2,3],'李文虎':'89'}
print(dic.pop('常鑫'))
print(dic)
- dic.clear() :清空
dic = {'常鑫':[1,2,3],'李文虎':'89'}
dic.clear()
print(dic)
字典的改
- dic[键] = 值 : 字典中没有这个键值对,就是添加,有的时候就是修改
dic = {'常鑫':[1,2,3],'李文虎':'89'}
dic['常鑫'] = 'dsb'
print(dic)
- dic.update(字典) :update括号中的级别高于update前面的字典,有一样就更改值,如果没有就添加在后面
dic = {"常鑫":[1,2,3],'李文虎': '89'}
dic1 = {"1":3,"5":9,"李文虎":100}
dic1.update(dic)
print(dic1)
字典的查
- for循环获取的是字典中每个键值对的键
dic = {"常鑫":[1,2,3],'李文虎': '89'}
for i in dic:
print(i)
- dic.get(键):通过键获取值,如果不存在就返回None
dic = {"常鑫":[1,2,3],'李文虎': '89'}
print(dic.get('常鑫'))# 结果是[1,2,3]
dic = {"常鑫":[1,2,3],'李文虎': '89'}
print(dic.get('cx'))# 结果是None
- dic[键] (建议不使用): 通过键获取值,如果不存在就报错
dic = {"常鑫":[1,2,3],'李文虎': '89'}
print(dic['常鑫']) # 结果是[1,2,3]
dic = {"常鑫":[1,2,3],'李文虎': '89'}
print(dic['cx']) # 报错
其他操作
dic = {"1":3,"5":9,"李文虎":100}
for i in dic:
print(i,dic.get(i)) # 获取所有键和值
- dic.keys() : 把键获取到高仿列表里,支持for循环,不支持索引
print(list(dic.keys())) # 获取到列表
dic1 = {"1":3,"5":9,"李文虎":100}
print(dic.keys()) # 结果是:高仿列表—— dic_keys(['1','5','李文虎'])
# 获取字典中所有的键
for i in dic.keys():
print(i)
# 获取字典中所有的值
lst = []
for i in dic:
lst.append(dic[i])
print(lst)
- dic.values() :把值获取到高仿列表里,支持for循环,不支持索引
print(list(dic.values())) # 获取到列表
dic1 = {"1":3,"5":9,"李文虎":100}
# 获取字典中所有的值
print(list(dic.values())) # 结果是[3, 9, 100]
- dic.items() : 把键和值组成的元组获取到高仿列表里,支持for循环,不支持索引
print(list(dic.items())) # 获取到列表
dic1 = {"1":3,"5":9,"李文虎":100}
print(dic.items())
# 结果是dict_items([('1', 3), ('5', 9), ('李文虎', 100)])
# 获取字典的键和值
for i in dic.items():
print(i[0],i[1])
dic1 = {"1":3,"5":9,"李文虎":100}
for i in dic1.items():
print(i)
# 结果是
('1', 3)
('5', 9)
('李文虎', 100)
for k,v in dic1.items():
print(k,v) # 获取每个元素的键和值
# 结果是:
1 3
5 9
李文虎 100
解构
a, b = 10,12
print(a)
print(b)
# 结果是
# 10
# 12
# 面试题
a = 10
b = 20
a,b = b,a
print(a,b) # 结果:20 10
a,b = [1,2]
print(a,b)
# 结果是 1 2
a,b = (3,4)
print(a,b)
# 结果是: 1 2
a,b = "23"
print(a,b) # 结果是: 2 3
工作之后可能会遇见
a,_,b = (3,4,5)
print(a,b) # 等号后边的值和前面的变量名要一一对应
a = 10,12 # 本质就是一个元组
print(a) # 结果是 (10,12)
a,b = {"1":"a","2":"b"} # 得到的是键
print(a,b) # 结果是 1 2
字典的嵌套
通过键一层一层的查找
# dic = {1001:["周杰伦","林俊杰"],
# 1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},
# 1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},
# 1004:{"韦小宝":[{"教主夫人":["教主"]},
# {"阿珂":"刺客"},
# {"双儿":"天地会"},
# {"爱心觉罗建宁":"公主"},
# {"独臂神尼":{"韦小宝师父":{"兰陵王":"隐身"},"花木兰":[
# "唧唧复唧唧","木兰是战士",{"爸爸":["花和尚"]}]
# }},
# {"陈圆圆":"丈母娘"},{"穆建平":"小郡主"}]},
# 1005:{"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]}
# }
# print(dic)
# print(dic[1004]["韦小宝"][0]["教主夫人"][0])
# print(dic[1005]["常鑫"][-1])
# print(dic[1002]["汪峰"]["前妻2"][-1])
# print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])
# print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])
day05——字典的更多相关文章
- day05 字典
今日内容(dict) 1.基本格式 2.独有方法 3.公共 4.强制转换 1.基本格式 字典(可变类型,3.6之后是有序) 帮助用户去表示一个事物的信息(事物是有多个属性) 键值不能为集合,列表,字典 ...
- python day05字典
一.字典 1.字典的结构: a={key:value,key2:value},key是不可变的,value是可变的. 例子:dic = {123: 456, True: 999, "id&q ...
- day05 字典 dict
今日内容: 字典 成对的保存数据. 以key:value的形式保存 用{}表示,每一项内容都是key:value, 每项数据之间用逗号隔开 字典中的key是不能重复的. 存储是依靠着key来计算的. ...
- 记录我的 python 学习历程-Day05 字典/字典的嵌套
一.字典的初识 为什么要有字典 字典与列表同属容器型数据类型,同样可以存储大量的数据,但是,列表的数据关联性不强,并且查询速度比较慢,只能按照顺序存储. 什么是字典 先说一下什么叫可变与不可变的数据类 ...
- Python全栈--目录导航
这里更新以Python语言作为基础,想要成为全栈工程师需要掌握的技能... Python基础语法 day01 初识Python day02 while循环 运算符和编码 day03 字符串 day04 ...
- python学习之旅
python学习分类 python基础 +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...
- 22期老男孩Ptython全栈架构师视频教程
老男孩Ptython全栈架构师视频教程 Python最新整理完整版22期视频教程 超60G课程容量<ignore_js_op> <ignore_js_op> <ignor ...
- 【DG】Oracle_Data_Guard官方直译
[DG]Oracle Data Guard官方直译 1 Oracle Data Guard 介绍 Oracle Data Guard概念和管理10g版本2 Oracle Data Guard ...
- DVWA实验之Brute Force(暴力破解)- Low
DVWA实验之Brute Force-暴力破解- Low 这里开始DVWA的相关实验~ 有关DVWA环境搭建的教程请参考: https://www.cnblogs.com/0yst3r-2 ...
随机推荐
- Java基础—实现多线程的三种方法
Java虚拟机(JVM,是运行所有Java程序的抽象计算机,是Java语言的运行环境)允许应用程序并发地运行多个线程.在Java语言中,多线程的实现一般有以下三种方法: 1.实现Runnable接口, ...
- ASP.NET Core系列:中间件
1. 概述 ASP.NET Core中的中间件是嵌入到应用管道中用于处理请求和响应的一段代码. 2. 使用 IApplicationBuilder 创建中间件管道 2.1 匿名函数 使用Run, Ma ...
- delphi webbrowser用法集锦
delphi webbrowser用法集锦 (2012-05-13 08:29:00) 标签: it 分类: 软件_Software WebBrowser1.GoHome; //到浏览器默认主页 We ...
- 如何在linux CentOS 上安装chrome 谷歌浏览器?
获得linux命令的root权限:http://blog.csdn.net/mddy2001/article/details/76521101. 更改密码在终端中输入:sudo passwd root ...
- SQL注入:宽字节注入
了解GBK编码 尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的 ...
- k8s Ingress和ingress控制器
ingress架构图简介 我们知道service的表现形式为IP:PORT,即工作在第四层传输层(TCP/IP层),那么对于不同的URL地址经常对应用不同的后端服务或者虚拟服务器,这些应用层的转发机制 ...
- python中property简单使用与实现
property简单使用 class P: """ property简单使用 """ def __init__(self,name): se ...
- 网络流之最大流EK --- poj 1459
题目链接 本篇博客延续上篇博客(最大流Dinic算法)的内容,此次使用EK算法解决最大流问题. EK算法思想:在图中搜索一条从源点到汇点的扩展路,需要记录这条路径,将这条路径的最大可行流量 liu 增 ...
- $attrs/inheritAttrs可以实现组件的跨级传递
$attrs/inheritAttrs可以实现组件的跨级传递 // 问题1 为什么this.$attrs可以得到主 传递过来的值 //$attrs 说明 // ...
- 读架构漫谈&我眼中的架构师
本周是开学的第二周,读了由资深架构师王概凯 Kevin 执笔的系列专栏架构漫谈.初识这门课,懂得也不是很多,读了架构漫谈,有了一些理解. 首先作者讲述了缘起,由早期人独立自主生活到后来的集群,作者由这 ...