zoukankan      html  css  js  c++  java
  • 基础数据类型之字典

    字典

    1,定义

    • 列表可以存储大量的数据类型,但是只能按照顺序存储,数据与数据之间关联性不强。
      所以咱们需要引入一种容器型的数据类型,解决上面的问题,这就需要dict字典。
      字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成。
      在dict中key是 唯⼀的.在保存的时候, 根据key来计算出⼀个内存地址. 然后将key-value保存在这个地址中.
      这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key必须是可hash的
      可以改变的都是不可哈希的, 那么可哈希就意味着不可变. 这个是为了能准确的计算内存地址⽽规定的.
      
      • 字典是无序的,可变的,
      • 用于储存数据,储存大量数据,
      • 字典要比列表快,可以将数据和数据之间进行关联
      • 英文dict 简写 dic,使用大括号{}
      • 字典中逗号(,)分隔每一个元素

    2,字典的键对值

    • 语法:{'key1':1,'key2':2}, 'key':键,1:值
      
    • 字典的’键‘:

      • 可哈希的——不可变的数据类型(int, str, tuple, bool),避免哈希冲突,使用了开放寻址法
        不可哈希 的——可变的数据类型( list, dict, set)
        要求唯一  : ——如果有重复的,后边的值将前边的值覆盖
        
    • 字典的值:

      • 可以任意
        

    字典的方法

    1,字典的增

    • 如果dict 中没有出现这个key,就会将key-value组合添加到这个字典中

    • 没有就添加,有就改键的值

    • dic = {}
      dic['david'] = 1992
      print(dic)
      result
      {'david':1992}
      
    • 如果dict中没有出现过这个key-value,可通过setdefault设置默认值

    • 使用setdefault这个方法,里边放的这个内容是我们字典的键,添加到字典的值就是一个none

    • 当setdefault中第一个参数存在这个字典中就不进行添加

    • dic= {}
      a = dic.setdefault('科比')
      print(a)
      print(dic)
      result
      None
      {'科比': None}
      

    2,字典的删

    • dic.pop()

    • 通过字典的键进行删除键对值

    • 删除有返回值,返回的是被删除的值,没有键

    • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
      s = dic.pop('詹姆士')
      print(s)
      print(dic)
      result
      23
      {'科比': 24, '艾弗森': 3, '韦德': 3, '麦迪': 1}
      
    • dic.popitem()

    • 随机删除

    • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
      s=dic.popitem()
      print(s)
      print(dic)
      result
      ('麦迪', 1)
      {'科比': 24, '詹姆士': 23, '艾弗森': 3, '韦德': 3}
      
    • clear():清空

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        dic.clear()
        print(dic)
        result
        {}
        
        
    • del

      • del dic['key']:通过字典的键删除键对值

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        del dic['詹姆士']
        print(dic)
        result
        {'科比': 24, '艾弗森': 3, '韦德': 3, '麦迪': 1}
        
        
      • 删除字典

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        del dic
        print(dic)
        result
        报错NameError: name 'dic' is not defined
        
        

    3,字典的改

    • 键在字典中存在的时候就是修改键对应的值

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        dic['詹姆士'] = 8
        print(dic)
        result
        {'科比': 24, '詹姆士': 8, '艾弗森': 3, '韦德': 3, '麦迪': 1}
        
        
    • 字典中没有键对值的时候就是添加,添加到字典的末尾

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        dic['乔丹'] = 23
        print(dic)
        result
        {'科比': 24, '詹姆士': 23, '艾弗森': 3, '韦德': 3, '麦迪': 1, '乔丹': 23}
        
        
    • update(dic)

      • update括号中的字典级别高于update前面的字典

      • 当update中的字典没有dic中的键对值,就添加到dic中,

      • dic.updaate(dic1)
        程序从左向右运行,即字典dic1添加到字典dic的末尾,且print(dic)。
        
        
      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        dic1={'乔丹':23}
        dic.update(dic1)
        print(dic)
        result
        {'科比': 24, '詹姆士': 23, '艾弗森': 3, '韦德': 3, '麦迪': 1, '乔丹': 23}
        
        

    4,字典的查

    • for循环

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        for i in dic:
        	print(i)   #循环获取都是字典中每个键值对应的键
        result
        科比
        詹姆士
        艾弗森
        韦德
        麦迪
        
        
    • dic[key]:通过键来查,结果是键的值;如果键不在字典中,就会报错

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        dic1 = dic['科比']
        print(dic1)
        result
        24
        
        
      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        dic1 = dic['乔丹']
        print(dic1)
        result
        报错:KeyError: '乔丹'
        
        
    • dic.get(key):通过键来查看,结果是键的值

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        dic1 = dic.get('艾弗森')
        print(dic1)
        result
        3
        
        
      • 当字典中没有这个键,显示None

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        dic1 = dic.get('乔丹')
        print(dic1)
        result
        None
        
        
      • dic.get.(key,"内容"):我们可以在get查找的时候自己定义返回的结果

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        dic1 = dic.get('艾弗森',"忠艾一生")
        print(dic1)
        3
        
        
    • dic.setdefault(key),查询,none,则添加,有则可修改,可不添加

    其他操作

    • 获取所有的键(keys)

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        for i in dic.keys():
        	print(i)
        result
        科比
        詹姆士
        艾弗森
        韦德
        麦迪
        
        
      • key_list = dic.keys()
        
        
    • 获取所有的值

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        for i in dic.values():
        	print(i)
        result
        24
        23
        3
        3
        1
        
        
      • values_list = dic.values()
        
        
    • 获取所有的键对值

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        for k,v in dic.items():
        	print(k,v)
        result
        科比 24
        詹姆士 23
        艾弗森 3
        韦德 3
        麦迪 1
        
        
      • keys_values_list = dic.items()
        
        
      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        for i in dic.items():   #items获取的键对值是元祖
            print(i)
        result
        ('科比', 24)
        ('詹姆士', 23)
        ('艾弗森', 3)
        ('韦德', 3)
        ('麦迪', 1)
        
        
    • 高仿列表

      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        for i in dic:
        	print(i,dic.get(i))
        result
        科比 24
        詹姆士 23
        艾弗森 3
        韦德 3
        麦迪 1
        
        
      • dic= {'科比':24,'詹姆士':23,'艾弗森':3,'韦德':3,'麦迪':1}
        print(dic.keys())
        result
        dict_keys(['科比', '詹姆士', '艾弗森', '韦德', '麦迪'])#高仿列表
        
        

    解构

    • a,b = 1,2
      print(a,b)
      结果:
      1 2
      
      a,b = ('你好','世界')
      print(a,b)
      结果:
      你好 世界
      
      
      a,b = {'汪峰':'北京北京','王菲':'天后'}
      print(a,b)
      结果:
      汪峰 王菲
      
      

    字典的嵌套

    • dic = {
          'name':'汪峰',
          'age':48,
          'wife':[{'name':'国际章','age':38}],
          'children':['第一个熊孩子','第二个熊孩子']
          }
      
      获取汪峰的妻子名字
      d1 = dic['wife'][0]['name']
      print(d1)
      获取汪峰的孩子们
      d2 = dic['children']
      print(d2)
      获取汪峰的第一个孩子
      d3 = dic['children'][0]
      print(d3)
      
      

    布尔值

    • True :非零整数
    • False:零
    • None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
    • 其余均为真
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    神经网络学习之----单层感知器
    神经网络学习之----神经网络发展史
    神经网络学习之----神经网络概述
    C语言几种常见的字符串输入
    基于单链表实现集合的交集、并集、差集的运算
    关于单链表的一些基本操作
    输入20个整数存放到一个单向链表中,并顺序逆序输出
    《你的灯亮着吗》阅读笔记
    场景调研
    站立会议总结09
  • 原文地址:https://www.cnblogs.com/daviddd/p/12033365.html
Copyright © 2011-2022 走看看