为什么要有字典?

  • 列表可以存储大量的数据,但数据间的关联型不强

    列表的查询速度相对慢

    dict:字典,容器型数据类型

数据类型的分类:

  • 可变与不可变
  • 可变(不可哈希)的数据类型:

    列表list,字典dict,集合set
  • 不可变(可哈希)的数据类型:

    str,bool,int,tuple

字典的特点:

  • {}括起来,以键值对形式存储的容器型数据类型

    例:

    dic = {'诗人':{'name':'李白','苏轼','杜甫','白居易'},
    'age':[123,'七十八','五十',66]}
  • 键必须是不可变的数据类型

  • 值可以是任意数据类型,包括对象。

  • 字典在3.5版本之前(包括3.5)是无序的

  • 字典在3.6版本会按照初次建立字典的顺序排列,在学术上不认为是有序的

  • 字典在3.7以后都是有序的。

字典的优点:

  • 查询速度非常快,存储关联型的数据。

字典的缺点:

  • 以空间换时间

字典的创建方式:

  • 方式一:

    dic = dict((('one',1),('two',2),('three',3)))

    print(dic) # {'one': 1, 'two': 2, 'three': 3}
  • 方式二:

    dic = dict(one=1,two=2,three=3)

    print(dic) # {'one': 1, 'two': 2, 'three': 3}
  • 方式三:

    dic = ({'one':1,'two':2,"three":3})

验证字典的合法性:

  • 只能通过键找到值,不能通过值找到键,键在同一字典内必须要唯一
  • 字典的键必须是不可变的(可哈希)数据类型

    值可以存放任意数据类型

字典的增删改查:

增:

  • 方式一:键已存在则修改,不存在则在字典末尾追加之

    字典['键'] = 值

  • 方式二:键已存在则不变,不存在则增加

    字典.setdefault('键') # 添加一个值为空的键

    字典.setdefault('键',值) # 添加一个键值对

删:

  • pop:按照键删除

    • 字典.pop('键') #有返回值,返回的是键里面的值
  • 若要删除键不存在字典中,会报错,可以给键后面增加一个参数

    字典.pop('键','没有此键') # 这样不会报错

  • clear:清空

    dict.clear():清空字典内的数据,字典本身还存在

  • del:按照键删除

    del dic['key']若键不存在则会报错

改:

​ dic['key'] = '新值'

查:

  • 方式一:直接打印键值

    print(dic['key'])

    若键不存在则会报错
  • 方式二:get

    li = dic.get('key','自定义的返回值')

    print(li)

    若键不存在则显示为none
  • 还有三个特殊方法
    • keys():所有的键

      print(dic.keys()):

      将所有的键放进一个特殊的数据类型,dict_keys

      可以转换成列表

      print(list(dic.keys()))
 for key in dic.keys():
print(key)
# 打印字典的每个键
  • values():所有的值

    print(dic.values()):打印所有的值

    可以转换成列表:

     print(list(dic.values()))
for values in dic.values():
print(values)
# 打印字典的每个值
  • items():所有的键值对

    print(dic.items()):将所有的键值对以元组的形式放进一个特殊的数据类型中

     for i in dic.items():
    print(i)
    # i 为每个元组

利用元组的拆包分别赋值:

for key,value in dic.items():
print(key,value)
# key,value:两个变量分别对应键和值

字典的嵌套:

dic = {
'name':'汪峰',
'age':48,
'wife':[{'name':'国际章','age':38}]
'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'}
}

# 1.取出汪峰的名字。
dic.get('name')
# 2.获取这个字典:{'name':'国际章','age':38}
dic.get('wife')
# 3.获取wife的名字。
dic["wife"].get('name')
# 4.获取girl_second的名字
dic['children'].get('girl_second')

Python字典的初识、增删改查及嵌套的更多相关文章

  1. python操作mysql数据库增删改查的dbutils实例

    python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...

  2. Python列表的增删改查排嵌套特殊输出格式

    Python列表的增删改查排嵌套特殊输出格式 一.列表的样子: a = ['q' , 'w' , 'e ', 'r','t'] a为列表名,[ ]为列表内容,' '为列表内的元素,'q'为a[0] 二 ...

  3. python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)

    一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...

  4. python之路day05--字典的增删改查,嵌套

    字典dic 数据类型划分:可变数据类型,不可变数据类型 不可变数据类型:元组,bool,int str -->可哈希可变数据类型:list,dict,set --> 不可哈希 dict k ...

  5. python之路day04--列表的增删改查,嵌套、元组的嵌套、range、for循环嵌套

    列表增删改查 增加 append li = ['taibai','zy','nvshen'] li.append('aa') print(li) #['taibai', 'zy', 'nvshen', ...

  6. python学习(list增删改查、及常用方法)

    1.Python多条件判断: 多条件判断if: passelse: pass循环 while for i = 0 while i > 1: print('hello') else: print( ...

  7. Python之注册表增删改查(干货)

    在Windows平台下,对注册表的增删改查的需求比较多,微软提供了很多用于访问,修改注册表等的API,我们可以使用诸如bat,或者C++等各种方式去访问修改注册表.无所不能的python下如何完成这些 ...

  8. Python实现mysql数据库增删改查

    利用python操作mysql数据库用法简单,环境配置容易,本文将实现对库增.删.改.查的简易封装!   1. 环境配置 安装第三方包  ,导入模块 mysql.connector  pip inst ...

  9. python列表的增删改查和嵌套

    列表 python常用的数据类型 可承载任意的数据类型 列表是有序的,可索引.切片(步长) 列表的创建 list1 = [1, 2, 'whll'] #1. list2 = list() #2. #3 ...

随机推荐

  1. Java 合并、拆分PPT幻灯片

    序 在日常使用PPT时,为了便于操作和管理文档,时常会遇到需要将PPT幻灯片进行合并或拆分的情况.本文将通过Java程序来演示如何进行上述操作. 示例要点: 1. 合并PPT幻灯片 1.1 将第一个P ...

  2. 高可用集群之keepalived+lvs实战

    keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...

  3. Jenkins持续集成git、gitlab、sonarqube(7.0)、nexus,自动化部署实战,附安装包,严禁转载!!!

    导读 之前用的都是SVN,由于工作需要用到Git,求人不如求己,技多不压身,多学一项技能,未来就少求别人一次,系统的学一遍,自己搭建一整套环境,自动化部署(自动发版),代码质量检测等等(为啥不用doc ...

  4. Python实现自动生成小学四则运算题目

    Github地址: https://github.com/guoyuyi/gyy.github.io/blob/%E4%BD%9C%E4%B8%9A1/zy1.py 题目描述: 通过python语言编 ...

  5. ftp客户端自动同步 Windows系统简单操作ftp客户端自动同步

    服务器管理工具它是一款功能强大的服务器集成管理器,包含win系统和linux系统的批量连接,vnc客户端,ftp客户端等等实用功能.我们可以使用这款软件的ftp客户端定时上传下载的功能来进实现ftp客 ...

  6. 你还不会ES的CUD吗?

    近端时间在搬砖过程中对es进行了操作,但是对es查询文档不熟悉,所以这两周都在研究es,简略看了<Elasticsearch权威指南>,摸摸鱼又是一天. es是一款基于Lucene的实时分 ...

  7. Group Convolution组卷积

    思路按照常规卷积到组卷积来. 常规卷积: 如果输入feature map尺寸为C∗H∗W C*H*WC∗H∗W,卷积核有N NN个,输出feature map与卷积核的数量相同也是N NN,每个卷积核 ...

  8. sql 注入初探

    Sql注入:就是将恶意的sql语句插入到用户输入的参数当中并带入数据库中查询并在浏览器返回不该显示的信息 寻找sql注入点: 1.要有参数值的传递(url当中GET型的.注册用户名的页面.登录框.留言 ...

  9. Centos-上传下载文件-rz sz

    依赖: ssh协议.远程终端 .lrzsz软件包.window操作系统 安装 lrzsz 软件包 yum install -y lrzsz 下载命令 sz sz fileName 上传命令 rz 相关 ...

  10. Cortex-M3双堆栈MSP和PSP+函数栈帧

    为了防止几百年以后找不到该文章,特此转载 ------------------------------------------------开始转载--------------------------- ...