PythonDay05

摘要:
第五章今日内容字典字典语法:{'key1':1,'key2':2}注意:dict保存的数据不是按照我们添加进去的顺序保存的.是按照hash表的顺序保存的.hash表不是连续的.所以不能进切片作.它只能通过key来获取dict中的数据列表可以存储大量的数据类型,但是只能按照顺序存储,数据与数据之间关联性不强。为了解决这一问题,就需要用字典。3,oldboy对应的字典加个键值对’男孩’,’linux’。4,将oldboy对应的字典中的alex对应的列表中的python2删除

第五章

今日内容

  • 字典

字典

语法:{'key1':1,'key2':2}

注意:dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表 不是连续的. 所以不能进⾏切片⼯作. 它只能通过key来获取dict中的数据

列表可以存储大量的数据类型,但是只能按照顺序存储,数据与数据之间关联性不强。为了解决这一问题,就需要用字典。字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成

在dict中key是 唯⼀的.在保存的时候, 根据key来计算出⼀个内存地址. 然后将key-value保存在这个地址中.

这种算法被称为hash算法,key必须是可hash的

已知的可哈希(不可变)的数据类型: int, str, tuple, bool 不可哈希(可变)的数据类型: list, dict, set

注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据

注意:dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表 不是连续的. 所以不能进⾏切片⼯作. 它只能通过key来获取dict中的数据

dict = {1:1,2:2,3:'3',4:'5'}
print(dict[1])# 1
print(dict[4]) # '5'

注意:dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表 不是连续的. 所以不能进⾏切片⼯作. 它只能通过key来获取dict中的数据

1.字典的增

dic = {}

dic['name'] = '徐'
dic['age'] = 19
print(dic)# {'name': '徐', 'age': 19}

# 如果dict中没有出现这个key,就会将key-value组合添加到这个字典中
# 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值

dic.setdefault('雨隹',1)
print(dic)# {'雨隹': 1}
# 我们使用setdefault这个方法 里边放的这个内容是我们字典的健,后面写默认值,可不写,默认为None

dic.setdefault('雨隹',123)
# 这样就是不会进行添加操作了,因为dic这个字典中已经存在
# 总结: 当setdefault中第一个参数存在这个字典中就就不进行添加操作,否则就添加

2.字典的删

dic = {'剑圣':'易','哈啥给':'剑豪','大宝剑':'盖伦'}
s = dic.pop('剑圣') # pop删除有返回值,返回的是被删的值
print(dic) # 打印删除后的字典

dic.popitem() # 随机删除 python3.6是删除最后一个
print(dic)

dic.clear() # 清空

3.字典的改

dic = {'剑圣':'易','哈啥给':'剑豪','大宝剑':'盖伦'}
dic['大宝剑'] = '德玛西亚'
print(dic)

dic.update({'key':'v','哈啥给':'剑姬'})
# 当update中的字典里没有dic中键值对就添加到dic字典中,如果有就修改里边的对应的值,必须是字典

4.字典的查

dic = {'剑圣':'易','哈啥给':'剑豪','大宝剑':'盖伦'}
s = dic['大宝剑'] #通过健来查看,如果这个健不在这个字典中.就会报错

s1 = dic.get('剑圣') #通过健来查看,如果这个健不在这个字典中.就会返回None

s2 = dic.get('剑姬','可定义返回的结果') # 我们可以在get查找的时候自己定义返回的结果

5.字典的其他操作

keys()  获取所有的键
values() 获取所有的值
items() 获取所有的键值
for循环 -- 循环的是字典的键
for k,v in dic.items():
print('这是键',k)
print('这是值',v)
# 循环字典获取键和值

练习

dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
请在k3对应的值中追加一个元素 44,输出修改后的字典
请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典

6.结构

a,b = 1,2
print(a,b)						#   1 2

a,b = ('你好','世界')
print(a,b)						# 你好,世界

a,b = {'汪峰':'北京北京','王菲':'天后'}
print(a,b)
结果:
汪峰 王菲

解构可以将内容分别赋值到变量当中,我们使用解构就能够快速的将值使用

7.字典的嵌套

dic = {
    101:{1:{"日魔":"对象"},
         2:{"隔壁老王":"王炸"},
         3:{"乔碧萝":("日魔","炮手","宝元")},
         },
    102:{1:{"汪峰":{"国际章":["小苹果","大鸭梨"]}},
         2:{"邓紫棋":["泡沫","信仰","天堂","光年之外"]},
         3:{"腾格尔":["隐形的翅膀","卡路里","日不落"]}
         },
    103:{1:{"蔡徐坤":{"唱":["鸡你太美"],
                   "跳":["钢管舞"],
                   "rap":["大碗面"],
                   "篮球":("NBA形象大使")}},

         2:{"JJ":{"行走的CD":["江南","曹操","背对背拥抱","小酒窝","不潮不花钱"]}},
         3:{"Jay":{"周董":["菊花台","双节棍","霍元甲"]}}},

    201:{
        1:{"韦小宝":{"双儿":"刺客","建宁":{"公主":{"吴三桂":"熊"}},"龙儿":{"教主老婆":"教主"}}}
    }
}
print(dic[201][1]["韦小宝"]["建宁"]["公主"]["吴三桂"])
# print(dic[103][1]["蔡徐坤"]["跳"][0][1])
# print(dic[102][2]["邓紫棋"][1])

练习

dic1 = {
 'name':['alex',2,3,5],
 'job':'teacher',
 'oldboy':{'alex':['python1','python2',100]}
 }
1,将name对应的列表追加⼀个元素’wusir’。
2,将name对应的列表中的alex⾸字⺟⼤写。
3,oldboy对应的字典加⼀个键值对’⽼男孩’,’linux’。
4,将oldboy对应的字典中的alex对应的列表中的python2删除

免责声明:文章转载自《PythonDay05》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇FUSE使用心得oracle的表分区的定义与操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[转]Windows 下 Nginx+IIS 使用

本文转自:https://blog.csdn.net/chihen/article/details/52698594 Windows 下 Nginx+IIS 使用 一、Nginx简介 Nginx ("engine x") 是一个高性能的HTTP 的 和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗...

pg10、11、12版本特性

2. 分区表的改进 PostgreSQL 10 实现了声明式分区,PostgtreSQL 11完善了功能,PostgreSQL 12提升了性能。我们知道在PostgreSQL 9.X时代需要通过表继承实现分区,这时还需要手工加触发器或规则把新插入的数据重新定向到具体的分区中,从PostgreSQL 10之后不需要这样了,直接用声明式分区就可以了,语法如下:...

前端缓存最佳实践

前言 缓存,这是一个老生常谈的话题,也常被作为前端面试的一个知识点。 本文,重点在与探讨在实际项目中,如何进行缓存的设置,并给出一个较为合理的方案。 强缓存和协商缓存 在介绍缓存的时候,我们习惯将缓存分为强缓存和协商缓存两种。两者的主要区别是使用本地缓存的时候,是否需要向服务器验证本地缓存是否依旧有效。顾名思义,协商缓存,就是需要和服务器进行协商,最终确定...

Lua入门

变量 局部变量用local定义,可以平行赋值;没有加local的都是全局变量 local a ,b = c ,d 函数定义 function foo(argv) ... end 这里我们还可以在函数内部定义匿名函数(闭包的概念) function foo(argv) ... function inner...

快速构建H5单页面切换应用

在Web App和Hybrid App横行的时代,为了拥有更好的用户体验,单页面应用顺势而生,单页面应用简称`SPA`,即Single Page Application,就是只有一个HTML页面的应用程序,应用中所有的视图都包含在这个HTML页面中,并通过JavaScript控制相关视图的显示和隐藏,这种模式可以让用户在Web App感受Native Ap...

HashMap源码和并发异常问题分析

要点源码分析 HashMap允许键值对为null;HashTable则不允许,会报空指针异常; HashMap<String, String> map= new HashMap<>(2); map.put(null,null); map.put("1",null); Hash...