zoukankan      html  css  js  c++  java
  • Python 字典dict 集合set

    字典dict

    Python内置字典,通过key-value进行存储,字典是无序的,拓展hash

    names = ['Michael', 'Bob', 'Tracy']
    scores = [95, 75, 85]
    

    给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。

    用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢

    >>> d = {'aa':1,'bb':2,'cc':3}
    >>> d['aa']   #  可以直接根据名字来查找
    1
    
    

    为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢

    在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。

    key-value的存储,是在放进去的时候必须通过key的值算出value的存放位置,这样拿的时候也是根据value的值去内存中拿

    把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:

    >>> d
    {'aa': 1, 'bb': 2, 'cc': 3}
    >>> d['hh']= 88
    >>> d
    {'aa': 1, 'bb': 2, 'cc': 3, 'hh': 88}
    

    一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:

    >>> d['lal'] = 88  
    >>> d
    {'aa': 1, 'bb': 2, 'cc': 3, 'hh': 88, 'lal': 88}
    

    如果key不存在,dict就会报错:
    避免key不存在的错误,通过in判断key是否存在
    1.

    >>> d
    {'aa': 1, 'bb': 2, 'cc': 3, 'hh': 88, 'lal': 88}
    >>> 'in' in d
    False
    >>> 'cc' in d
    True
    

    get()

    >>> d.get('hahah')     # key不存在 ,返回None 在命令行中None是不显示的  
    >>> d.get('hahah',-1)    # 可以自定义返回值 -1
    >>> d.get('hh')  #key 存在,返回value
    88
    
    

    增加字典元素两种方法
    1.

    >>> dict1 = {1:223}
    >>> dict1[1] = 'ahah'
    
    1. setdefault
    >>> dict1.setdefault(2,'hello')
    'hello'
    >>> dict1
    {1: 'ahah', 2: 'hello'}
    >>>
    

    删除Python字典

    >>> dict1
    {1: 'ahah', '1': 233234, 2: 'hello'}
    >>> del dict1[1]     # 用的是方括号  删除指定的key
    >>> dict1
    {'1': 233234, 2: 'hello'}
    >>> del dict1[2]
    >>> dict1
    {'1': 233234}
    
    >>> dict1.pop('1')   # 用的pop() 
    233234
    >>> dict1
    {}
    >>>
    

    清空字典

    dict1.clear()

    删除字典对象

    del dict1

    集合set

    set同字典相比,只有key,没有value.

  • 相关阅读:
    lsmod-查看内核模块信息
    centos 7 下通过 conda 安装 cuda pytorch
    python 中文编码
    matplotlib
    How to determine the correct number of epoch during neural network training? 如何确定Epoch
    nvidia-smi Failed to initialize NVML: Driver/library version mismatch
    MySQL MAX函数:查询指定列的最大值
    mysql之group_concat函数详解
    @Param注解的用法解析@Param注解的用法解析
    【MySQL函数】replace()函数
  • 原文地址:https://www.cnblogs.com/Python666/p/6642832.html
Copyright © 2011-2022 走看看