python 浅谈字典dict
一、字典简介
字典(dict)是python中唯一的映射类型,他是以{ }括起来的键值对组成,在dict中的key是唯一的。在保存的时候,根据key来计算出一个内存地址。然后将key-value保存在这个地址中,这种算法叫hash算法,所以,切记dict中存储的key-value中的value是可以hash的,可以hash就是不可变。
可以hash(不可变)的数据类型:int,str,tuple,bool
不可hash(可变)的数据类型:list, dict,set
语法:{key1:value1,key2:value2,key3:value3,key4:value4...}
注意:key必须是可以hash的不可变的,value没有要求,可以保存任意的数据类型.
dict保存数据不是按照我们添加的顺序保存的,是按照hash表的顺序保存的,而hash不是连续的,所以不能进行 切片,只能通
过key来获取dict.字典在内存中保存,是无顺序的 .
二、字典的增
1、dic[new_key]=vlue
dic = {}
dic["王者荣耀"] = "最近我才知道" # dic[字典中不存在的key] = value
dic["吃鸡战场"] = "什么鬼"
print(dic) #{'王者荣耀': '最近我才知道', '吃鸡战场': '什么鬼'}
2、dic.setdefault("key",value)
执行流程:查询字典中是否存在该key,如果不存在就新增;如果存在就返回value值,不会进行新增或者修改
dic={'王者荣耀': '最近我才知道', '吃鸡战场': '什么鬼'}
dic.setdefault("宫本武藏", "很牛B")
print(dic)#{'王者荣耀': '最近我才知道', '吃鸡战场': '什么鬼', '宫本武藏': '很牛B'}
dic.setdefault("宫本武藏", "我的宫本很菜") # 如果key存在了就不会再添加了
print(dic)#{'王者荣耀': '最近我才知道', '吃鸡战场': '什么鬼', '宫本武藏': '很牛B'}
三、字典的删
1、dic.pop(key) 表示指定key删除键值对
dic = {"张无忌":'倚天屠龙记', "紫薇":"还珠格格", "王语嫣":"天龙八部", "刘能":"乡村爱情协奏曲"}
dic.pop("刘能") # 指定某个key进行删除
2、dic.popitem( ) 表示的随机删除一项,但是在python3.6以上显示的是删除最后一项
dic = {"张无忌":'倚天屠龙记', "紫薇":"还珠格格", "王语嫣":"天龙八部", "刘能":"乡村爱情协奏曲"}
dic.popitem() # 实际上是随机删除的
print(dic)#{'张无忌': '倚天屠龙记', '紫薇': '还珠格格', '王语嫣': '天龙八部'}
3、del dic[ key ] 表示删除key这一对键值对
dic={"name":"张三","age":18,"email":"123456@asd.com"}
del dic["age"]
print(dic)#{'name': '张三', 'email': '123456@asd.com'}
4、dic.clear( )清空字典
四、字典的改
1、dic[ old_key ]=new_value 表示修改key对应的value值
dic = {"张无忌":'倚天屠龙记', "紫薇":"还珠格格", "王语嫣":"天龙八部", "刘能":"乡村爱情协奏曲"}
dic['王语嫣'] = "天龙九部" # dic[已经存在的key] = 新value
print(dic) #{'张无忌': '倚天屠龙记', '紫薇': '还珠格格', '王语嫣': '天龙九部', '刘能': '乡村爱情协奏曲'}
2、dic.update(dic2) 表示把dic2中的元素添加到dic中,在dic字典中如果重复的,key-value覆盖,不重复就直接新增----------把dic2中的内容覆盖到dic中
dic={"":"alex","":"wusir","":"taibai"}
dic2={"":"小小","":"MM","":"diudiu"}
dic.update(dic2)
print(dic) #{'0': 'alex', '1': '小小', '3': 'diudiu', '2': 'MM'}
print(dic2)#{'1': '小小', '2': 'MM', '3': 'diudiu'}
五、字典的查
查询⼀般⽤key来查找具体的数据 。
1、dic[ key ] 如果存在key,就返回value,如果不存在就报错
print(dic['name'])
# print(dic['sylar']) # 报错
2、dic.get(key, “错误提示语”) 表示,如果存在key,返回value,不存在就显示提示语
dic={"还珠格格":"小燕子","倚天屠龙记":"张无忌","三国演义":"赵云"}
print(dic.get("三国演义")) #赵云
print(dic.get("青云志","没有此电视剧")) #没有此电视剧
六、相关操作
1、遍历
(1)for k in dic:print( k) 表示打印所有的key
dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"}
print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不⽤管它是什么.当成list来⽤就⾏
for key in dic.keys():
print(key)
(2)for v in dic.values :print(v) 表示打印所有的value
print(dic.values()) # dict_values([123, 'sylar', 18, '科⽐']) ⼀样. 也当list来⽤
for value in dic.values():
print(value)
(3)for k,v in dic.item(): print(k.v) 表示打印所有的键值对
print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age',18), ('ok', '科⽐')])
# 这个东⻄也是list. 只不过list中装的是tuple
for key, value in dic.items(): # ?? 这个是解构
print(key, value)
(4)解构
a, b = 1, 2
print(a, b)
(c, d) = 3, 4
print(c, d)
注意:解构需要满足前后的数量保持一致。
七、字典的嵌套
dic1 = {
"name": "汪峰",
"age": 18,
"wife": {
"name": '章⼦怡',
"age": 28
},
"children": ['第⼀个⽑孩⼦', '第⼆个⽑孩⼦'],
"desc": '峰哥不会告我吧. 没关系. 我想上头条的'
}
print(dic1.get("wife").get("name"))print(dic1.get("children"))
print(dic1.get("children")[1])
python 浅谈字典dict的更多相关文章
- python浅谈正则的常用方法
python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...
- python基础之字典dict和集合set
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...
- python入门14 字典dict
字典dict是无序的key:value格式的数据序列 #coding:utf-8 #/usr/bin/python """ 2018-11-11 dinghanhua 字 ...
- python中的字典(dict),列表(list),元组(tuple)
一,List:列表 python内置的一种数据类型是列表:list.list是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表 ...
- Python 浅谈注释的重要性
最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是难以下咽,几乎每个字符都要咨询他,用老师的话来说,这就是山炮编程员,所以此时的我意识到写一篇关于注释程序的重要性了,因此特地的写一篇文章帮助大家 ...
- Python 浅谈编程规范和软件开发目录规范的重要性
最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是觉得注释和命名规范的重要性了,因为几乎每个字符都要咨询他,用老师的话来说,这就是命名不规范的后续反应.所以此时的我意识到写一篇关于注释程序的重要 ...
- python基础类型(字典:dict)
字典的介绍: 字典(dict)Python中唯一的一个映射类型.他是以{}括起来的键值对组成,在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址,然后将key-value保存到这 ...
- Python内置字典;dict ,set
dict and set dict: 键-值 /重复添加 set : 键 / key不能重复 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容.相反,这些方法会创建新的对象并返 ...
- python——Container之字典(dict)详解
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象集合.两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取. ...
随机推荐
- .net敏捷开发框架 力软敏捷开发(learun) 让开发变的更简单
版本:6.1.6.2 体验地址:www.fishcmonkey.com 联系QQ:6539471
- sqlserver数据库 IsNull()
Isnull 函数主要作用是将为空的值替换为指定值,如果不为空返回检查类型的返回值, 语法:Isnull (check_expression , replacement_value) isnull(参 ...
- 介绍一款文档神器:pandoc
http://pandoc.org/ 因为工作需要,将一批markdown的文档转换成word文档,找来找去,这个pandoc真是神器 啊,推荐给大家 If you need to convert f ...
- Webapi创建和使用 以及填坑(二)
Webapi创建和使用 以及填坑(二) 上篇文章由于时间问题没能讲到POST提交,今天做一个补充 POST: 当我们直接通过POST发送方式发送会发现错误信息 参考解决:https://www.cnb ...
- mysql存储过程调用含out参数
mysql 数据库有以下存储过程: CREATE DEFINER=`root`@`localhost` PROCEDURE `hovertreeTest`( IN `Param1` INT, ), O ...
- vb.net 使用ip查詢(Host Name)(WorkGroup Name)(MAC Address)-運用cmd及nbtstat命令
Sub nbtstat(ByVal ip As String) Dim strRst, strRst1, strRst2, strRst3 As String Dim n1, n2, n3 As In ...
- 学习记录---C# Web程序获取客户端电脑信息
问题描述:由于最近项目需要使用Mac地址与注册码进行加密处理,但是又因为Web程序的局限性不能获取客户端电脑系统信息,当然IE浏览器有一个activex控件他是可以通过Js在前端代码中直接获取的,局限 ...
- 最长滑道问题(非递归,C++)
这是爱奇艺的一道算法题. 题目描述请参考博客http://blog.csdn.net/sinat_30186009/article/details/52356053,在此表示感谢. 基本思路参考了以上 ...
- 处理JavaScript异常的正确姿势
译者按: 错误是无法避免的,妥善处理它才是最重要的! 原文: A Guide to Proper Error Handling in JavaScript Related Topics: 译者: Fu ...
- link-hover-visited-active
:link { color: blue; } :visited { color: purple; } :hover { color: red; } :active { color: orange; } ...