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

  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. C#中怎样跨窗体调用事件-从事件订阅实例入手

    场景 C#中委托与事件的使用-以Winform中跨窗体传值为例: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100150700 ...

  2. 回忆C++

    内联函数 内联函数适用于函数较为短小的情况. 内联函数存在的意义是:提高程序运行效率. 内联函数的缺点:如果一个内联函数太长且频繁调用,会导致生成的可执行程序较大. 静态链接库会被嵌入到生成的可执行程 ...

  3. Linux nodejs 安装以及配置环境

    从官网中下载nodejs 打开官网 https://nodejs.org/en/download/ 复制拿到链接,下载nodejs wget https://nodejs.org/dist/v10.1 ...

  4. SAP 预制发票报错 -Material 20000000 D119223073 in valuation area VNSM has inconsistant ML data- 之对策

    SAP 预制发票报错 -Material 20000000 D119223073 in valuation area VNSM has inconsistant ML data- 之对策 业务人员报对 ...

  5. python3类和实例

    面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可 ...

  6. pycharm 配置使用 flake8 进行语法检测

    打开 PyCharm 在 Terminal 处输入 pip install flake8 在 File ->Settings ->Tools->External Tools 添加一个 ...

  7. Python环境安装与基础语法(3)——进制、运算符和优先级、原码、补码

    进制 转十进制:基本运算方法(权算方式) 0b1111——>1*2**3 + 1*2**2 + 1*2**1 + 1*2**0 0x7F——>7*16**1 + F*16**0 转二进制: ...

  8. SQLServer常用快捷键汇总

    菜单激活键盘快捷键 操作 SQL Server 2017 SQL Server 2008 R2 移到 SQL Server Management Studio 菜单栏 Alt Alt 激活工具组件的菜 ...

  9. LearnOpenGL.PBR.工作流贴图

  10. Setting up the data and the model

    Table of Contents: Setting up the data and the model Data Preprocessing Weight Initialization Batch ...