一、字典简介

  字典(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. 我的IdentityServer目录

    概念部分 理解oauth协议 理解什么是claim 学习Identity Server 4的预备知识 Open ID Connect(OIDC)在 ASP.NET Core中的应用 操作部分 入门: ...

  2. 【Tomcat】Tomcat相关设计模式分析

    门面模式 门面模式在 Tomcat 中有多处使用,在 Request 和 Response 对象封装中.Standard Wrapper 到 ServletConfig 封装中.Application ...

  3. JavaScript 笔记(一)

    Number 1.2345e3=1.2345*1000 NaN//not a num 无法计算结果 Infinity //无限大 数组 var arr=[1,2,'hello'] 下标从0开始 对象 ...

  4. #WEB安全基础 : HTML/CSS | 0x1初识CSS

    "我受够这些难看的网页了,我怎么才能让它变得好看点?"你说. 我答道:"看来你得学点CSS了" 学习这些东西只有一个原则,就是用你的脑袋想,用你的眼睛看,用的你 ...

  5. link-hover-visited-active

    :link { color: blue; } :visited { color: purple; } :hover { color: red; } :active { color: orange; } ...

  6. HDU 4764 Stone(巴什博奕)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  7. 洛谷P2421 [NOI2002]荒岛野人(扩展欧几里得)

    题目背景 原 A-B数对(增强版)参见P1102 题目描述 克里特岛以野人群居而著称.岛上有排列成环行的M个山洞.这些山洞顺时针编号为1,2,…,M.岛上住着N个野人,一开始依次住在山洞C1,C2,… ...

  8. 2018-11-21 手工翻译Vue.js源码第一步:14个文件重命名

    背景 对现有开源项目的代码进行翻译(文件名/命名/注释) · Issue #107 · program-in-chinese/overview 简单地说, 通过翻译源码, 提高项目代码可读性(对于母语 ...

  9. mysql数据库表操作-表的主键索引和普通索引

    数据库索引就象书的目录一样,如果在字段上建立了索引,那么以索引列为查询条件时可以加快查询数据的速度.查询数据库,按主键查询是最快的,每个表只能有一个主键列,但是可以有多个普通索引列,主键列要求列的所有 ...

  10. C# SharpMap的简单使用

    本文是利用ShapMap实现GIS的简单应用的小例子,以供学习分享使用.关于SharpMap的说明,网上大多是以ShapeFile为例进行简单的说明,就连官网上的例子也不多.本文是自己参考了源代码进行 ...