python基础数据类型之字典(基础三)
第五章python基础数据类型之字典(基础三)
python常用数据类型之组合数据类型(非序列类型):字典
字典介绍
字典(dict)是python中唯⼀一的⼀一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯⼀一的. 在保存的时候, 根据key来计算出⼀一个内存地址. 然后将key-value保存在这个地址中. 这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key'必须是可hash,字典查询效率非常高。
可哈希(不可变)的数据类型: int, str, tuple, bool
不可哈希(可变)的数据类型: list, dict, set
字典的无序的,python3.6版本以上 默认了咱们定义顺序,python3.5以下是随机显示
dic = {"key":"value",1:2,2:3} 键:必须是可哈希(不可变的数据类型),并且是唯一的 值:任意
字典语法:{key1: value1, key2: value2....}
dict 以{}表示,每一项用逗号隔开,内部元素用key:value的形式保存数
dic = {"jj":"林俊杰","jay":"周杰伦",(1,2,3):"陶喆","1":"哈哈"}
print(dic)
print(dic[jj]) #结果:"林俊杰"
print(dic[(1,2,3)]) # dic = {[1, 2, 3]: '周杰伦'} # list是可变的. 不不能作为key
# dic = {{1: 2}: "哈哈哈"} # dict是可变的. 不不能作为key
#dic = {{1, 2, 3}: '呵呵呵'} # set是可变的, 不不能作为key
字典作用:
字典是存储大量的数据,字典比列表还有大,
字典的查找值的时候通过key值能够方便,快速,
字典比较消耗内存 最长用的数据 : 字符串,列表,字典
字典能够将数据进行关联:dic = {"a":"b","b":"c","c":"d"}
有明确的对应关系时,推荐使用字典--------json
# list((1,3,4)) -- 列表
# tuple([1,2,3]) -- 元组# s = "{'a':1,'b':2}"
# print(dict(s)) 目前所学的知识点字典不能转换的
5.1 字典的增删改查
5.1.1 字典的增加
- 字典直接添加:dic[键] = 值
dic = {}
dic['name'] = "alan" # dic[键] = 值
print(dic) #结果{'name': 'alan'}
#用key往里面存数据即可,如果dict中没有出现这个key, 就会新增⼀一个key-value的组合
dic['age'] = "18"
print(dic)
dic["name2"] = "国际周"
dic["name2"] = "周杰伦" # 如果key已经存在。 那么会替换掉原来的value, 修改
- dic.setdefault()
如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
dic.setdefault("name")
dic.setdefault("name", "lubi") # 如果存在key,不会执行新增"lubi",setdefault将不起作⽤用 print(dic)
dic = {"a":"b","b":"c"}
添加字典
dic.setdefault("c","aaa")
print(dic)dic.setdefault("a","aaa")
print(dic)print(dic.setdefault("D"))
执行1.先去字典查看咱们要添加的键存不存在
执行2.如果键在字典中存在就不填加,如果要是不存在就添加
5.1.2 字典的删除
字典删除没有 remove()
dic = {"a":"b","b":"c","jj":"林俊杰","jay":"周杰伦",(1,2,3):"陶喆"}print(dic.pop("a")) # 通过#指定key值删除 pop具有返回值,返回的被删除的值
print(dic)del dic # 删除整个字典
print(dic)del dic["b"] # 删除指定的键值对
print(dic)dic.popitem()# 随机删除del dic["a"] # 删除dic.clear() #清空字典中所有的内容
print(dic) # 删除整个字典中的键值对
5.1.3 字典的修改
直接修改 dic["b"] = "ab"
dic = {"a":"b","b":"c","jj":"林俊杰","jay":"周杰伦",(1,2,3):"陶喆"}
dic["b"] = "这是值" # 键在字典中存在就是修改,键在字典中不存在就是增加
print(dic)dic["jay"] = "双截棍" # 直接把周杰伦改成双截棍
print(dic)
dic.update()
如果key重名. 则修改替换. 如果不不存 在key, 则新增.
dic2 = {1:2,"a":"a1"}
dic2.update(dic1) # update括号里的字典级别高
print(dic2)
dic = {"jj": "林俊杰", "jay": "周杰伦", (1, 2, 3): "陶喆", "1": "哈哈"}
dic1 = {"jj": "阿毛", "jay": "周杰伦", (1, 2, 3): "43", "1": "雪碧"}dic.update(dic1) # 把dic1中的内容更更新到dic中.如果key重名,则修改替换.,如果不不存在key则新增
print(dic)
5.1.4字典的查询
查询一般用key来查找具体的数据
直接用key查找
dic = {"jj": "林俊杰", "jay": "周杰伦", (1, 2, 3): "陶喆", "1": "哈哈"}
print(dic['jj']) # 存在key
print(dic['国际周']) # 当这个key不存在的时候会报错
dic.get()
print(dic.get("国际周", "周杰伦不在这里")) # 没有key. 返回None
setdefault()
新增步骤:1.先看有没有key, 如果有就过, 如果没有,执行新增 2.根据key把值返回 dic = {}
dic = {}
dic["jay"] = "不能说的密码" #添加一组字典元素
print(dic)
value = dic.setdefault("jj", "江南") # 1新增一组,2.再查key值
print(value) #结果:江南
value2 = dic.setdefault("jay", "青花瓷") # 已经存在了key为jay,新增不执行。
print(value2) #直接查询结果:不能说的秘密
5.2字典的其他操作
- 通过for循环取到keys() values()的值
- 实现遍历字典
for key in dic.keys():print(key) #取到keyfor value in dic.values():print(value) #取到value
dic = {"jj": "林俊杰", "jay": "周杰伦", (1, 2, 3): "陶喆", "1": "哈哈"}
print(dic.keys()) # dict_keys (['jj', 'jay', '(1, 2, 3)', '1']) 不是list.当list来⽤.
dic = {"jj": "林俊杰", "jay": "周杰伦", (1, 2, 3): "陶喆", "1": "哈哈"}
print(dic.keys())
for key in dic.keys():print(key) #取到keyprint(dic[key]) #取到value
- dic.items()
每一项一项的取值实现遍历字典
dic = {"jj": "林俊杰", "jay": "周杰伦", (1, 2, 3): "陶喆", "1": "哈哈"}
print(dic.items()) #取到的值是key和value 元组类型
dic = {"jj": "林俊杰", "jay": "周杰伦", (1, 2, 3): "陶喆", "1": "哈哈"}
print(dic.items())
for item in dic.items():print(item) #元组类型print(item[0],item[1])
解构,解包
元组和列表都含有解包功能。
a, b = 1, 2 #前面解包的个数和后面的个数要一致
print(a, b)
(c, d) = 3, 4
print(c, d)
e, f = [1, 2, 3] # 前面解构的时候注意数量量必须匹配
print(e, f)
dic = {"jj": "林俊杰", "jay": "周杰伦", (1, 2, 3): "陶喆", "1": "哈哈"}
print(dic.items())
for k v in dic.items(): #需要遍历字典,操作中涉及到key和valueprint(k) #元组类型print(v)
5.3字典的嵌套
dic1 = {"name": "杰哥","age": 31,"wife":{"name": '静雯',"age": 38},"children": ['桐妹', '布布'],"desc": ' 我想上头条' }
print(dic1.get("wife").get("name"))
print(dic1.get("children"))
print(dic1.get("children")[1])
5.3.1字典嵌套取值
dic = {101:{1:["周伦","林杰"],2:{"汪":["国际章",{"妻1":["熊大","熊二"]},{"妻2":["葫芦娃","木吒"]}]}},102:{1:["李龙","吴京京","李杰杰"],2:{"谢锋锋":["张柏","王菲菲"]},3:["alex","wusir","大象","奇奇"]},103:{1:["郭美","爹"],2:{"王玉强":{"马荣":"宋吉吉"}}},201:{1:["凹凸曼","皮卡丘"],2:{"朱怼怼":{"杨密密":"刘威威"}}}
}print(dic[101][2]["汪峰峰"][2]["妻2"][0])
['国际章', {'妻1': ['熊大', '熊二']}, {'妻2': ['葫芦娃', '木吒']}]
{'妻2': ['葫芦娃', '木吒']}
['葫芦娃', '木吒']home1 = dic[102][3][2]
{1: ['李龙', '吴京京', '李杰杰'],
2: {'谢锋锋': ['张柏', '王菲菲']},
3: ['alex', 'wusir', '大象', '奇奇']}
print(home1)print(dic[103][2]["王玉强"]["马荣"])
转载于:https://www.cnblogs.com/yueling314/p/11000508.html
python基础数据类型之字典(基础三)相关推荐
- python判断数据类型是不是字典的方法
这篇文章主要介绍python判断数据类型是不是字典的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! python的数据类型有:数字(int).浮点(float).字符串(s ...
- python基础数据类型操作系统_python基础数据类型
python变量名里面 不能使用系统自带的关键字 不能有符号 不能使用数字作为开头 大小写敏感 变量名是没有类型的 是变量名所引用对象的数据类型 变量无须一些括号来括起来 python数据类型的可变 ...
- Python经典数据类型:字典
选择题 以下关于Python字典的描述中,错误的是: A.在定义字典时,键和值用冒号连接 B.字典通过整数索引来查找其中的元素 C.字典的键值对之间没有顺序且不能重复 D.字典用中括号中包含键名的格式 ...
- 4、Python基本数据类型之字典,集合
一.字典 在python中定义一个字典的语法为: 1 dic = {1:"张三",2:"李四"} 字典的每一个元素由key:value组成,这类似于一个学号对应 ...
- python编程字典数据库_python基础数据类型之字典、集合
哈啰!大家好,今天是初五了,牛年接财神的好日子,懂得都懂.祝@所有人2021年,事事顺利,牛气冲天,福利满满,财运亨通,步步高升,学业进步! 那么,这次介绍的是鼎鼎大名的字典,其以其操作的灵活性.操作 ...
- python组合数据类型选择题_python基础学习——基础数据类型练习题(二)
一.根据要求查找元组中的指定元素 l1=[11,22,33] l2=[22,33,44] 1)获取元组l1.l2中内容相同的元素 l1=[11,22,33] l2=[22,33,44]for i in ...
- Python学习笔记之字典(三)
嵌套:有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套.你可以在列表中嵌套字典.在字典中嵌套列表甚至在字典中嵌套字典. 1.字典列表,一个列表里面包含多个字典,即列表中嵌套 ...
- Python组合数据类型:字典dictionary
一.组合数据类型container objects 组合数据类型container objects:能够表示多个数据的类型 集合类型:集合类型是元素集合,元素无序不重不变 序列类型:序列类型是元素向量 ...
- python基本数据类型之字典详解
文章目录 字典(dict) 一.定义和表示 二.字典的基本操作 2.1 查看(取值) 1.key在字典中取值案例: 2.key不在字典中取值会报错,如果想要不报错,可用==get方法设置默认值== 2 ...
- Python组合数据类型之字典类型
单元概述 主要解决问题:让程序更好地处理一组数据 三类重要组合数据类型:集合类型.序列类型和字典类型 学完本章,我们能够在头脑中建立集合.序列和字典的模式来表达对一组数据的表达和处理 1. 定义 首先 ...
最新文章
- Nature综述:菌根共生的独特性和共性
- TensorFlow 深度学习笔记 从线性分类器到深度神经网络
- python导入txt文件并绘图-Python读取txt某几列绘图的方法
- Windows 8操作技巧之快捷键大全
- python如何定义i_如何在Python中使用自定义消息引发相同的Exception?
- [No0000FD]C# 正则表达式
- mysql meb安装_用meb搭建MySQL Master/Slave
- python需要缩进的块_“需要缩进块”
- pip 安装tensorflow==2.1太慢怎么办?(pip安装超时Read timed out)
- Java read failed_android-获取java.io.IOException:读取失败,套接...
- 初识p-code (pcode)
- RNA m6A修饰问题汇总
- 文献阅读-FCER1G与透明细胞癌中巨噬细胞的浸润相关并且通过调节肿瘤免疫产生不良预后
- 中秋节静态HTML网页作业作品 大学生中秋网页设计制作成品 简单DIV CSS布局网站
- 先有小米后有vivo,为何这届手机厂商接连“造芯”?
- linux常用命令-查询手册
- 自学app难不难 有c语言,软件编程入门自学到底难不难 零基础自学软件编程的方法...
- IEPE振动传感器同步信号采集卡/ICP同步数据网络采集模块
- AB pLc网络配置软件Rsnetworx
- ISO-8859系列标准
热门文章
- Vagrant-文件夹共享
- eve为什么服务器还在维护,EVE无法进入
- 7行代码让B站崩溃3小时,竟因“一个诡计多端的0”
- BIO、NIO、AIO网络编程
- 测试基础(含答案2)
- c语言子程序返回指令,十八、使用call和ret指令实现子程序的调用和返回
- 电信无限流量卡无服务器,电信无限流量卡实测 牟足劲一天刷30GB
- 工程初始化:报错... ...is exceeding the 65535 bytes limit
- 【原创】Kinect for windows SDK 入门学习资源合辑
- 生信宝典:生物信息学习系列教程、视频教程