一、字典

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) 的增删改查及其他方法的更多相关文章

  1. Python笔记·第六章——字典 (dict) 的增删改查及其他方法

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可 ...

  2. Python笔记·第五章—— 列表(List) 的增删改查及其他方法

    一.列表的简介   列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...

  3. 用DBContext (EF) 实现通用增删改查的REST方法

    我们用ADO.NET Entity Data Model来生成实体类后,一般都会对这些类进行基本的增删改查操作,如果每个类都要写这些基本的方法,实在太乏味了.下面就是通过step by step的方式 ...

  4. 列表(List) 的增删改查及其他方法

    一.列表的简介   列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...

  5. hibernate实现增删改查的各种方法

    1>接口(主要是增删改查的接口)BaseDao.java /** * * @author fly.zhou */ public interface IBaseDao { //增加对应实体的一条记 ...

  6. linux的sed(增删改查)使用方法

    sed的增删改查的基本操作 参考:https://www.cnblogs.com/0zcl/p/6855740.html 01:增(a) 2个sed命令,分别是:(这些操作都是在内存中进行的,所以不会 ...

  7. 总结day5 ---- ,字典的学习,增删改查,以及字典的嵌套, 赋值运算

    内容大纲: 一:字典的定义 二:字典的增加 >1:按照key增加,  无则增加,有则覆盖 >2:setdefault()  ,无则增加,有则不变 三:字典的删除 >1:pop()  ...

  8. 字典树(增删改查 HDU 5687)

    度熊手上有一本神奇的字典,你可以在它里面做如下三个操作: 1.insert : 往神奇字典中插入一个单词 2.delete: 在神奇字典中删除所有前缀等于给定字符串的单词 3.search: 查询是否 ...

  9. 列表(List) 的增删改查及其他方法 和元组(tuple)的查

    一.列表 1.列表简介: 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li ...

随机推荐

  1. spring boot部署系统--morphling简介

    Morphling 简介 Morphling是一套基于Spring Boot 1.5开发的部署系统,依赖简单,一套Mysql即可运行,操作简单明了,适用于百台规模几下机器的运维操作 功能概述 系统部署 ...

  2. 理解spread运算符与rest参数

    理解spread运算符与rest参数 spread运算符与rest参数 是ES6的新语法.它们的作用是什么?能做什么事情? 1. rest运算符用于获取函数调用时传入的参数. function tes ...

  3. Python 3.6.3 利用Dlib 19.7库进行人脸识别

    0.引言 自己在下载dlib官网给的example代码时,一开始不知道怎么使用,在一番摸索之后弄明白怎么使用了: 现分享下 face_detector.py 和 face_landmark_detec ...

  4. Linux文件系统概述

    Unix文件是以字节序列组成的信息载体(container),内核不解释文件的内容. Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有系统的结构,所有Linux用户和程序 ...

  5. Spring框架中ModelAndView、Model、ModelMap区别

    原文地址:http://www.cnblogs.com/google4y/p/3421017.html SPRING框架中ModelAndView.Model.ModelMap区别   注意:如果方法 ...

  6. wordpress登录、修改、删除、查看代码记录

    wordpress 登录,新增.修改.删除.查看,页面代码如下 package info.itest.www; import static org.junit.Assert.*; import org ...

  7. [数据结构]C语言二叉树的实现

    树和图是数据结构中比较麻烦的东西,里面涉及的概念比较多,也最有用, 就比如一般树广泛应用于人工智能的博弈上,而基于图的广度优先和深度优先搜索也广泛应用于人工智能寻路上面 首先我们要把树进行分类: &g ...

  8. C# VS2010结合SQL Server 2008数据库编程实现方法

    SQL Server 数据库在C#编程中经常用到,如何实现在具体项目中数据库和具体应用的结合是我们经常遇到的问题,我们这次主要针对如何使用SQL Server 数据库展开,下面是具体的操作以及简单的代 ...

  9. sublime学习笔记

    学习课程地址:快乐的sublime编辑器_sublime编辑器使用 另可参考笔记地址:http://c.haoduoshipin.com/happysublime/ PS:博主的一些文章地址:http ...

  10. 【Socket】苍老师有了丈夫,我也有了SAEA

    一.前言        时间过得真是快,转眼就2018年了.首先祝各位博友,软件开发者新年新气象,事业有成,身体健康,阖家幸福!最近看到园子里好多关于自己的2017年度总结以及对自己新一年的愿景,觉得 ...