一、字典简介

  字典(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. Docker在Linux上运行NetCore系列(二)把本地编译好的镜像发布到线上阿里云仓库

    转发请注明此文章作者与路径,请尊重原著,违者必究. 系列文章:https://www.cnblogs.com/alunchen/p/10121379.html 开始 本篇文章结束在本地创建完成镜像后, ...

  2. JS_单个或多个文件上传_不支持单独修改

    A-From表单直接填写提交地址,不过干预: 1. 单文件上传 最简单的文件上传,是单文件上传,form标签中加入enctype="multipart/form-data",for ...

  3. 【转载】 C#中全角转半角以及半角转全角

    半角指的是一个字符占用一个标准字符的位置.全角指一个字符占用两个标准字符位置的状态.在C#中,我们可以通过程序的方法,将相应的半角字符串信息转换为全角类型,也可以实现全角转半角功能. 相应封装好的方法 ...

  4. DataTable和List互转

    /// <summary> /// list转datatable /// </summary> /// <typeparam name="T"> ...

  5. c# 接口的协变和逆变

    如果派生类只是用于输出值,那么这种结构化的委托有效性之间的常数关系叫做协变 就是创建一个派生类委托对象 让派生类赋值给基类对象 协变关键字out 对期望传入基类时允许传入派生对象的特性叫逆变  逆变关 ...

  6. 模拟获取post数据的方式

    使用下面两种方法可以获取post数据 .通过$HTTP_RAW_POST_DATA获取 $post=$GLOBALS['HTTP_RAW_POST_DATA']; 但需要修改相应的php.ini指令 ...

  7. python学习笔记(四)、条件、循环及其他语句

    1 再谈print和import 1.1 打印多个参数 print 能够同时打印多个表达式,并且能自定义分隔符.如下: print('a','b','c') ——> a b c print('a ...

  8. java8 Stream sorted()的一次调用链记录

    代码 public static void main (String[] args) { Stream.of("d2", "a2", "b1" ...

  9. mysql基础整理02

    比较运算符 > < = >= <= !=和<> !=和<>都是一个意思,都是不等于的意思 and和or and 并且&& 需要同时满足多 ...

  10. Java自动内存管理机制学习(二):垃圾回收器与内存分配策略

    备注:本文引自<深入理解Java虚拟机第二版>仅供参考 图片来自:http://csdn.net/WSYW126 垃圾收集器与内存分配策略 概述 GC要完成3件事: 哪些内存需要回收? 什 ...