字典 (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 ...
随机推荐
- org.elasticsearch.transport.ReceiveTimeoutTransportException[cluster:monitor/nodes/liveness] request_id [31] timed out after [5000ms]
ES连接超时,异常信息 2017-09-07 10:42:45.042 [elasticsearch[Bantam][transport_client_worker][T#17]{New I/O wo ...
- 为 Azure IoT Edge 设备部署 Azure Stream Analytics 服务
在前面的两篇文章<Azure IoT Edge on Windows 10 IoT Core>和<Azure IoT Edge on Raspberry Pi 3 with Rasp ...
- Oracle数据库(一)概述、基础与简单操作
数据库: 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 数据库分类: 关系型数据库 非关系型数据库 数据库 类型 特性 优点 缺点 关系型数据库 SQLite.Oracle. ...
- NFV、DPDK以及部分用户态协议研究
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 对我而言,这是一个新的领域,很有意思. 一.解释名词: NFV(Network Functio ...
- OC学习9——反射机制
1.OC提供了3种编程方式与运行环境进行交互: 直接通过OC的源代码:这是最常见的方式,开发人员只是编写OC源代码,而运行环境负责在后台工作. 通过NSObject类中定义的方法进行动态编程:因为绝大 ...
- 使用 webpack 打包 font 字体的问题
之前在使用 Vue 做项目的时候使用了 font 字体,然而在打包的时候 font 字体的引用路径不正确. 解决办法就是在 webpack 的配置文件中设置根路径 目录在 \config\index. ...
- [数据结构]C语言栈的实现
有始有终,所以我准备把各种数据结构都讲一次,栈也分顺序存储和链式储存,这里我们选择链式存储来讲,顺序存储没有难度(链式其实也是) 作为数据结构中最简单的栈,这里不会说太多,首先考虑一下下面的model ...
- bat获取系统时间修改系统密码
@echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe&q ...
- 文件上传之伪Ajax方式上传
From: <由 Windows Internet Explorer 8 保存> Subject: =?gb2312?B?zsS8/snPtKvWrs6xQWpheLe9yr3Jz7SrI ...
- linux部署solr服务--小记
1.将solr压缩包上传到web项目-solr文件夹下 2.解压solr-5.5.4.zip到当前文件夹下 linux 解压zip文件到当前目录 unzip filename.zip 提示没有unzi ...