字典的初识

  • why:
    • 列表可以存储大量的数据,但数据之间的关联性不强
    • 列表的查询速度比较慢。数量越大查询越慢
  • what:容器型数据类型:dict
  • how:
    • 数据类型的分类(可变与不可变)

      • 可变(不可哈希)的数据类型:list dict set 
      • 不可变(可哈吉)的数据类型:str bool int tuple (对原对象本身不可变) 
    • 字典:{}括起来,以键值对形式存储的容器型数据类型:
      dic = {
      '小明':
      {'name': '小明', 'age': 18, 'sex': '男'},
      '名单':
      ['小红', '小猪', '小严']
      }
    • 键必须是不可变的数据类型:int,str, bool tuple(唯一的)不然后一个就会把前一个给覆盖

      dic = {1: 'a', 1: 'b', 2: 'c'}
      print(dic) # {1: 'b', 2: 'c'}
    • 值可以是任意数据类型,对象。

    • 字典3.5版本之前包括3.5是 无序的。

    • 字典在3.6会按照初次建立字典的顺序排列,学术上不认为是有序的。
    • 字典在3.7以后都是有序的。
    • 字典的优点:查询速度非常快,存储关联性的数据
    • 字典的缺点:以空间换时间。
  • 字典的创建方式:面试题说出创建字典的方法
    • 方式一:

      dic = dict((('one', 1), ('tow', 2), ('stree', 3)))
      print(dic) # {'one': 1, 'tow': 2, 'stree': 3}
    • 方式二:
      dic = dict(noe=1, tow=2, three=3)
      print(dic) # {'noe': 1, 'tow': 2, 'three': 3}
    • 方式三:最正规的方式(官方)
      dic = dict({'noe': 1, 'tow': 2, 'three': 3})
      print(dic) # {'noe': 1, 'tow': 2, 'three': 3}
  • 字典的合法性,键必须是不可变的
    dic = {[1, 2]: 'ab', 1: 19}
    print(dic) dic = {[1, 2]: 'ab', 1: 19}
    TypeError: unhashable type: 'list'

字典的使用(增删改查)

  • 增:

    • 直接增加,有则改之,无则增加

      dic = {'name': '小明', 'age': 18}
      
      dic['sex'] = '男'  # {'name': '小明', 'age': 18, 'sex': '男'}
      dic['age'] = 23 # {'name': '小明', 'age': 23}
    • setdefault: 有则不变,无则增加
      dic = {'name': '小明', 'age': 18}
      
      dic.setdefault('age', 45)  # {'name': '小明', 'age': 18}
      dic.setdefault('set', '男') # {'name': '小明', 'age': 18, 'sex': '男'
  • 删除
    • pop:按照键值去删除键值对,返回对应的值,并且将字典当中的键值对删除

      dic = {'name': '小明', 'age': 18}
      
      dic.pop('age')  # 字典删除后为{'name': '小明'} 并返回18
      dic.pop('sex') # 没有此键就会报错
      dic.pop('sex', '没有此键') # 设置第二个参数,无论字典中是否有此键值,返回第二个参数的内容
    • clear:清空,内容清空
    • del:和pop一样但没有就报错,没有第二个参数,建议用pop
    • 直接改:

      dic = {'name': '小明', 'age': 18}
      dic['age'] = 55
      print(dic) # {'name': '小明', 'age': 55}
    • get()

      dic = {'name': '小明', 'age': 18}
      
      ll = dic.get('age')  # 返回查询的值
      ls = dic.get('sex', '没有此键') # 设置第二个参数,字典中没有此键值,返回第二个参数的内容
      print(ll) # 18
      print(ls) # 没有此键
    • keys() values() items() 三个特殊的
      dic = {'name': '小明', 'age': 18}
      
      print(dic.keys())  #  dict_keys(['name', 'age'])
      list(dic.keys()) # 转换成一个列表
    • values() 和keys一致,加载所以的键放在一个特殊的数字类型里去,可以转化成列表,也可以直接for循环
    • items()以元组的形式返回所有的键值对,可for循环遍历
      dic = {'name': '小明', 'age': 18}
      
      print(dic.items())  # dict_items([('name', '小明'), ('age', 18)])
      #----------------------------------------- # 使用元组的拆包 for i in dic.items():
      print(i) ('name', '小明')
      ('age', 18)
      #---------------------------------------------
      for key, value in dic.items():
      print(key, value) name 小明
      age 18
  • 相关题:
    a = 11
    b = 19
    # 解:
    a, b = b, a # 19, 11

字典的嵌套

dic = {
'name': '汪峰',
'age': 48,
'wife': [{'name': '国际章', 'age': 38}, ],
'children': {'girl_first': '小苹果', 'girl_second': '小怡', 'girl_three': '顶顶'}
} # 1. 获取汪峰的名字。
ll = dic.get('name')
print(ll) # 汪峰
# 2.获取这个字典:{'name':'国际章','age':38}。
ll = dic.get('wife')[0]
print(ll) # {'name': '国际章', 'age': 38}
# 3. 获取汪峰妻子的名字。
ll = dic.get('wife')[0].get('name')
print(ll) # 国际章
# 4. 获取汪峰的第三个孩子名字。
ll = dic.get('children').get('girl_three')
print(ll) # 顶顶

总结

字典:查询速度快,数据关联性强

  • 键不可变的数据类型(str int),唯一

  • 值:任意数据类型,对象

  • 增删改查

  • 字典的嵌套

day-05-字典的更多相关文章

  1. python学习05——字典

    笨办法学python第39节 这节主要讲解的是字典,首先字典和列表的两个区别是: 1. 列表中可以通过数字找到列表中的元素,是数字作为索引的:字典中可以通过任何东西找到想要的元素,即字典可以将一个物件 ...

  2. day 05字典相关内容

    1.day 04内容回顾及作业讲解 列表:增 append insert extend 删 remove pop clear del 改 li[索引]='被修改的内容' li[切片]='被修改的内容' ...

  3. python note 05 字典及其操作

    1. '''#数据类型划分:可变数据类型,不可变数据类型不可变数据类型:元组,bool int str 可哈希可变数据类型:list,dict set 不可哈希dict key 必须是不可变数据类型, ...

  4. python --- 05 字典 集合

    一.字典 可变数据类型 {key:value}形式   查找效率高   key值必须是不可变的数据类型 1.增删改查 1).增    dic["新key"] = "新va ...

  5. python之路---05 字典 集合

    二十.字典 可变数据类型 {key:value}形式   查找效率高   key值必须是不可变的数据类型 1.增删改查 1).增    dic["新key"] = "新v ...

  6. day 05 字典,字典嵌套

    字典: 1.列表如果存储大量数据,查询速度相对慢一些 2.列表存储的数据,一般没有什么关联性 针对以上原因,python提供了一个基础数据类型,dict 字典 数据类型的分类 : 容器型数据类型:li ...

  7. python基础篇 05字典

    本节主要内容:1. 字典的简单介绍2. 字典增删改查和其他操作3. 字典的嵌套 一. 字典的简单介绍:字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中 ...

  8. python 05 字典

    [TOC] 字典——dict { } 字典是无序,可变的数据类型. 字典:用于存储数据,存储大量数据,字典要比列表快:将数据和数据之间进行关联. 1. 定义:  dic = {键:值,键:值}  #每 ...

  9. python 05—字典

    一.字典的键是唯一的 键:简单对象,例[字符串.整数.浮点数.bool值] list不能作为键,但可以作为值. 例: score = { '萧峰' : 95, '段誉' : 97, '虚竹' : 89 ...

  10. Python全栈开发第二期课表

     day01-python 全栈开发-基础篇                 01 开课介绍 01:55:13 ★  02 开课介绍02 01:28:31 ★  03 开课介绍03 00:22:55 ...

随机推荐

  1. 专利 & 发明专利 & 专利查询

    专利 & 发明专利 & 专利查询 PDF 文档中表格解析的方法.系统.存储介质及电子设备 中国专利公布公告 http://epub.sipo.gov.cn/index.action 中 ...

  2. Techme INC解读基因魔剪,带来的是机遇还是风险?

    10月7日,诺贝尔化学奖颁给了法国美国生物学家Jennifer Doudna和生物化学家Emmanuelle Charpentier,以表彰她们对新一代基因技术CRISPR的贡献,全网沸腾. CRIS ...

  3. NGK.IO会是一个投资优质项目吗?

    互联网发展至今,技术已经高度成熟,人们发现了互联网的好处后,互联网逐渐渗入到家家户户.随着时代的变迁,人们对HTTP长期作为主流霸占互联网食物链的顶端感到不满足.当人类开始变得挑剔,HTTP的劣势就逐 ...

  4. 从零开始使用 webpack5 搭建 react 项目

    本文的示例项目源码可以点击 这里 获取 一.前言 webpack5 也已经发布一段时间了,其模块联邦.bundle 缓存等新特性值得在项目中进行使用.经过笔者在公司实际项目中的升级结果来看,其提升效果 ...

  5. MongoDB 在Node中的应用

    转: MongoDB 在Node中的应用 文章目录 一 .什么是 MongoDB? 二.小Demo 三.Demo 增删改查 3.1 新增 3.2 查询 3.2.1 查询所有 [{},{}] 找不到返回 ...

  6. XAPKInstaller - XAPK游戏包安装器

    XAPKInstaller 一个用于安装XAPK游戏包的安装器. 程序需要读写存储与获取已安装应用权限才可正常运行. 长按条目可显示文件的详细信息. SDK小于24(Android N)的设备会显示应 ...

  7. POJ-1860(最短路问题,Bellman-Ford算法判正圈)

    Currency Exchange POJ-1860 这题其实是最短路问题的变形,但是这里不用求解最短路,而是求解路径中是否存在正圈.如果存在正圈则说明兑换后的货币可以一直增加,否则不能实现通过货币转 ...

  8. Mybatis系列全解(八):Mybatis的9大动态SQL标签你知道几个?提前致女神!

    封面:洛小汐 作者:潘潘 2021年,仰望天空,脚踏实地. 这算是春节后首篇 Mybatis 文了~ 跨了个年感觉写了有半个世纪 ... 借着女神节 ヾ(◍°∇°◍)ノ゙ 提前祝男神女神们越靓越富越嗨 ...

  9. 从JVM底层原理分析数值交换那些事

    基础数据类型交换 这个话题,需要从最最基础的一道题目说起,看题目:以下代码a和b的值会交换么: public static void main(String[] args) { int a = 1, ...

  10. nessus 故障处理

    0x00 问题描述 打开Nessues Web Client时,界面循环在Initializing Please wait while Nessus prepares files needed...和 ...