一、字典简介

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

  1. python浅谈正则的常用方法

    python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...

  2. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  3. python入门14 字典dict

    字典dict是无序的key:value格式的数据序列 #coding:utf-8 #/usr/bin/python """ 2018-11-11 dinghanhua 字 ...

  4. python中的字典(dict),列表(list),元组(tuple)

    一,List:列表 python内置的一种数据类型是列表:list.list是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表 ...

  5. Python 浅谈注释的重要性

    最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是难以下咽,几乎每个字符都要咨询他,用老师的话来说,这就是山炮编程员,所以此时的我意识到写一篇关于注释程序的重要性了,因此特地的写一篇文章帮助大家 ...

  6. Python 浅谈编程规范和软件开发目录规范的重要性

    最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是觉得注释和命名规范的重要性了,因为几乎每个字符都要咨询他,用老师的话来说,这就是命名不规范的后续反应.所以此时的我意识到写一篇关于注释程序的重要 ...

  7. python基础类型(字典:dict)

    字典的介绍: 字典(dict)Python中唯一的一个映射类型.他是以{}括起来的键值对组成,在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址,然后将key-value保存到这 ...

  8. Python内置字典;dict ,set

    dict and set dict:  键-值 /重复添加 set :  键 / key不能重复 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容.相反,这些方法会创建新的对象并返 ...

  9. python——Container之字典(dict)详解

    字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象集合.两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取. ...

随机推荐

  1. 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一)

    转发时请注明原创作者及地址,否则追究责任. 原创:alunchen 当创建AspNetCore项目时 当我们创建一个AspNetCore项目时,需要我们手动添加Log: services.AddLog ...

  2. .net DBHelper

    DBHelper.cs是程序来连接数据的,也是一个程序必不可少的一个类(本人道行浅,目前这样认为).由于一个程序基本写一次,容易忘记.所有写在这里备注 首先是引用 using System.Data; ...

  3. 无法将文件“..\bin\Debug \**.dll”复制到“bin\**.dll”。对路径“bin \**.dll”的访问被拒绝。

    1.方法一: 将bin的只读属性去掉,就OK. 2.方法二: 直接关掉项目,重新打开.

  4. 【转】Mybatis源码解读-设计模式总结

    原文:http://www.crazyant.net/2022.html?jqbmtw=b90da1&gsjulo=kpzaa1 虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开 ...

  5. mysql无法远程连接

    在mysql的mysql数据库下: select user,host from user;(查看,没有本机的访问权限) grant all privileges on *.* to root@&quo ...

  6. Github被微软收购,这里整理了16个替代品

    微软斥资75亿美元收购以后,鉴于微软和开源竞争的历史,很多开发者都感到惊恐.毕竟,互联网上最大的一块可以自由的净土被微软染指,宝宝不开森.如果你真的担心微软会对Github有所动作,那么这里我列举了1 ...

  7. 初步了解redux

    redux作为react的状态状态管理工具,是十分重要的一部分,但是它在学习起来比较困难.它的写法一共分为三部分,而且他不像其他的东西一样可以写一步,在页面上查看一下.它必须三个部分全部完成之后,才能 ...

  8. Android通过Chrome Inspect调试WebView的H5 App出现空白页面的解决方法(不需要FQ)

    本文系博主原创,未经许可不得转载.如未经本人同意,私自转载或盗取资源提供下载,本人保留追究其法律责任的权利. 调试基于WebView的Hybrid App最舒服的工具当然是Chrome自带的开发者工具 ...

  9. Android--底部导航栏的动态替换方案

    1.通常来说,一般情况下,我们的app的BottomTab会有集中实现方式. 自定义view,然后自己写逻辑去实现互斥. 自由度最高,因为啥都是自己写的. 使用RadioGroup+RadioButt ...

  10. Thrift的C++服务端(线程池和非阻塞)模式

    非阻塞模式 #include "RpcServiceHandler.h" #include <thrift/concurrency/ThreadManager.h> # ...