字典 (dict) 的增删改查及其他方法
一、字典
1、字典简介:
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
PS:数据类型划分:可变数据类型 和 不可变数据类型
不可变数据类型:元组、bool、int、str (可哈希)
可便数据类型:list,dict,set (不可哈希)
dict key:必须是不可变数据类型,可哈希
value:任意数据类型
dict优点:二分查找去查询,存储大量的关系型数据
特点:无序的
2、字典用法:
1)增:
dic = {'age':18,'name':'liu','sex':'male'}
dic['high'] = 185 #没有键值对,添加
结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'high': 185}
dic['age'] = 16 #如果有键,则值覆盖
结果:{'age': 16, 'name': 'liu', 'sex': 'male'}
dic.setdefault('weight')
结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'weight': None}
dic.setdefault('weight',110) #有键值对,不做任改变,没有才添加。
结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'weight':110}
dic.setdefault('name','Liu') #有键值对,不做任改变,没有才添加。
结果{'age': 18, 'name': 'liu', 'sex': 'male'}
2)删:
dic = {'age':18,'name':'liu','sex':'male'}
dic.pop('age') #有返回值,按键去删删除
结果:{'name': 'liu', 'sex': 'male'}
dic.pop('二哥',None) #可设置返回值,没设置返回值会报错。
结果:{'age': 18, 'name': 'liu', 'sex': 'male'}
dic.popitem() #随机删除 有返回值 元组里面是删除键值,Python3.6是默认删除最后一个
结果:{'age': 18, 'name': 'liu'}
del dic['name'] #删除指定键值对,如果没有会报错。
结果:{'age': 18, 'sex': 'male'}
del dic #直接删除字典,会报错。
结果:报错
dic.clear() #清空字典
结果:{}
3)改:
dic = {'age':18,'name':'liu','sex':'male'}
dic['age'] = 16 #覆盖就是更改
结果:{'age': 16, 'name': 'liu', 'sex': 'male'}
dic = {'age':18,'name':'liu','sex':'male'}
dic1 = {'name':'刘松','weight':75}
dic.update(dic1) #直接替代更新,用字典更新替代老的字典.update前面的是被更新的字典
print(dic)
结果:{'age': 18, 'name': '刘松', 'sex': 'male', 'weight': 75} #更新后的字典
print(dic1)
结果:{'name': '刘松', 'weight': 75} #原字典
4)查:
dic = {'age':18,'name':'liu','sex':'male'}
print(dic.keys()) #字典的键值对 以列表形式输出 但是类型是键值对型
结果:dict_keys(['age', 'name', 'sex'])
print(dic.values()) #字典的值 以列表形式输出 但是类型是键值对型
结果:dict_values([18, 'liu', 'male'])
print(dic.items()) #字典的键值对 以元祖形式输出 但是类型是键值对型
结果:dict_items([('age', 18), ('name', 'liu'), ('sex', 'male')])
for i in dic: #默认打印出键值,后面跟.value可以打印出数值,后面跟.items可以打印键值对
print(i)
结果:age
name
sex
print(dic.get('age')) #根据键找对应的数值,不报错 可以自定义值 默认返回 none
结果:18
5)嵌套
例:
dic = {
'name':['alex','wusir','taibai'],
'py9':{
'time':'',
'learn_money':19800,
'addr':'CBD',
},
'age':21
}

字典 (dict) 的增删改查及其他方法的更多相关文章
- Python笔记·第六章——字典 (dict) 的增删改查及其他方法
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可 ...
- Python笔记·第五章—— 列表(List) 的增删改查及其他方法
一.列表的简介 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...
- 用DBContext (EF) 实现通用增删改查的REST方法
我们用ADO.NET Entity Data Model来生成实体类后,一般都会对这些类进行基本的增删改查操作,如果每个类都要写这些基本的方法,实在太乏味了.下面就是通过step by step的方式 ...
- 列表(List) 的增删改查及其他方法
一.列表的简介 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...
- hibernate实现增删改查的各种方法
1>接口(主要是增删改查的接口)BaseDao.java /** * * @author fly.zhou */ public interface IBaseDao { //增加对应实体的一条记 ...
- linux的sed(增删改查)使用方法
sed的增删改查的基本操作 参考:https://www.cnblogs.com/0zcl/p/6855740.html 01:增(a) 2个sed命令,分别是:(这些操作都是在内存中进行的,所以不会 ...
- 总结day5 ---- ,字典的学习,增删改查,以及字典的嵌套, 赋值运算
内容大纲: 一:字典的定义 二:字典的增加 >1:按照key增加, 无则增加,有则覆盖 >2:setdefault() ,无则增加,有则不变 三:字典的删除 >1:pop() ...
- 字典树(增删改查 HDU 5687)
度熊手上有一本神奇的字典,你可以在它里面做如下三个操作: 1.insert : 往神奇字典中插入一个单词 2.delete: 在神奇字典中删除所有前缀等于给定字符串的单词 3.search: 查询是否 ...
- 列表(List) 的增删改查及其他方法 和元组(tuple)的查
一.列表 1.列表简介: 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li ...
随机推荐
- Laravel学习笔记(三)--在CentOS上配置Laravel
在Laravel框架上开发了几天,不得不说,确实比较优雅,处理问题逻辑比较清楚. 今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下. 1)系统 ...
- lograted日志切割脚本
root@op-testsetup-web3.idc1.yiducloud.cn:/etc/logrotate.d# cat etcd /home/work/docker/logs/etcd/prev ...
- 对Spring与SpringMVC的理解
Spring 在我的Spring --简介及环境搭建跑通Hello提到关于Spring的基本结构与功能 SpringMVC 先上一张SpringMVC的流程图 Spring MVC 是一个模型 - 视 ...
- Wincc flexable的画面浏览切换组态
1.新建项目和6个画面 2.双击导航控件设置,选择默认设置 3.使用画面浏览编辑器编辑画面层次切换关系,拖拽画面到编辑器中进行关系连接 4.保运并运行
- 自定义bootstrap样式-9行样式自定义漂亮大气bootstrap导航栏
有人说前端发展太快,框架太多,各有所需,各有所长.看看这幅图,估计都知道这些框架,但是大部分公司中实际要用到的也就那么几个. 发展再快,框架再多.还是得回到原点,不就是Html+Css+JavaScr ...
- 强推一款开源集成开发环境——Geany
本人是一个标标准准的程序员,集成开发环境在电脑上大概看一下有:Code Blocks(C/C++),VS(C#,C/C++),eclipse(Java),Hbuild和web storm(前端),py ...
- Docker安装入门 -- 中间件镜像
Docker安装入门 -- 中间件镜像 php-fpm 1.docker build -t csphere/php-fpm:5.4 . //在当前目录下创建镜像 2.docker run -d - ...
- grep 与 find 简单命令
在使用linux的时候,经常会用到查找文件或者查找文本,下面介绍两个命令. grep 使用方法: // 在当前目录下递归查找class字符串 grep "string" -r . ...
- 小白的Python之路 day4 json and pickle数据标准序列化
一.简述 我们在写入文件中的数据,只能是字符串或者二进制,但是要传入文件的数据不一定全是字符串或者二进制,那还要进行繁琐的转换,然后再读取的时候,还要再转回去,显得很麻烦,今天就来学习标准的序列化:j ...
- mysql 的 fiter push down 优化
出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该声明. ...