zoukankan      html  css  js  c++  java
  • Python 字典方法

    访问字典的值

    字典中的 键/值 实际上就是一种映射关系,只要知道了 “键”,就肯定知道 “值”。

    >>> my_dict = dict(name = 'zhangsan',other = 'lisi')
    >>> my_dict['other']
    'lisi'

    所以字典中的 “键” 是多么的好用,通过它可以查找值,可以添加值,可以改变值。

    既然字典是一种映射关系,所以在字典里也就不需要考虑排序的问题,只要有了 “键” 就可以知道 “值”,那么键 / 值对的位置在哪里也就不需要考虑了,如果你仔细看过上面的例子,你就会发现添加完的值在字典中的显示并不按照它的添加顺序。又因为没有了排序,所以在字典中也没有索引,所以就不存在索引 & 切片。

    字典这种键 / 值对的方式存储数据是一种非常高效的方法,查找速度超快,相同的,如果你要在列表中查找一个值,需要从头开始一个个的找,直到找到了指定的索引值,但是在字典中,直接就可以通过 “键” 找到 “值”,小规模数据的时候这种好处可能不显,当存储大规模数据的时候,这种好处是相当明显的。

    字典的基本操作

    下面我用一些实例来依次演示字典中的基本操作:

    >>> my_dict = {'name':'rocky','like':'python','age':23}
    >>> len(my_dict) #返回字典中键 / 值对的数量
    3
    >>> my_dict['age'] #返回字典中的键值
    23
    >>> my_dict['like'] = 'C ++' #改变字典中的键值
    >>> my_dict
    {'age': 23, 'name': 'rocky', 'like': 'C ++'}
    >>> del my_dict['like'] #删除指定的键 / 值对
    >>> my_dict
    {'age': 23, 'name': 'rocky'}
    >>> 'like' in my_dict #检查字典中是否含有指定键的项
    False

    字典的方法

    与前面所讲述的其它对象类型相似,字典这个对象类型也有一些能够实现对其操作的方法。

    1.clear

    clear 清除字典中所有的元素,得到的是空的字典。

    >>> my_dict = {'name':'rocky','like':'python'}
    >>> my_dict.clear()
    >>> my_dict
    {}
    >>> del my_dict
    >>> my_dict
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    NameError: name 'my_dict' is not defined

    上面的例子我们可以看出 clear 和 del 的区别很大,clear 是将字典清空,得到空字典,而 delete 是将字典删除,直接从内存中去掉。

    2. get & setdefault

    这两个是跟键 / 值对相关的方法,get 方法就是要得到字典中某个 “键” 的 “值”,那么这就有人要说,不是上面的时候我们已经讲过直接查就行吗?在这里的 get 和之前说的还不太一样,这里的 get 稍微宽松一些,如果想要查的值不存在,get 不会有啥反应,而之前说的方法会报错。

    >>> my_dict = {'name':'rocky','like':'python'}
    >>> my_dict.get('name')
    'rocky'
    >>> my_dict.get('age')
    >>> my_dict['age']
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    KeyError: 'age'

    setdefault 也是用来查找字典中某个 “键” 的 “值”,如果查找的 “键” 存在的话就正常输出,如果不存在的话,就在字典中加入这个键 / 值对。

    >>> my_dict = {'name':'rocky','like':'python'}
    >>> my_dict.setdefault('like')
    'python'
    >>> my_dict.setdefault('age','23')
    '23'
    >>> my_dict
    {'name': 'rocky', 'like': 'python', 'age': '23'}

    3.items & keys & values

    这是字典的 3 个方法,它们之间有相似之处,很简单,请看下面的实例:

    >>> my_dict = {'name':'rocky','like':'python'}
    >>> my_d = my_dict.items()
    >>> my_d
    dict_items([('name', 'rocky'), ('like', 'python')])
    >>> my_k = my_dict.keys()
    >>> my_k
    dict_keys(['name', 'like'])
    >>> my_v = my_dict.values()
    >>> my_v
    dict_values(['rocky', 'python'])

    4.pop & popitem

    pop 和 popitem 是字典中的删除操作。

    pop 是以字典的 “键” 为参数,删除指定的键 / 值对,pop 中的参数不能省略且如果删除字典中没有的键 / 值对,会报错。

    >>> my_dict = {'name':'rocky','like':'python'}
    >>> my_dict.pop('name')
    'rocky'
    >>> my_dict
    {'like': 'python'}
    >>> my_dict.pop()
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    TypeError: pop expected at least 1 arguments, got 0
    >>> my_dict.pop('age')
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    KeyError: 'age'

    popitem 和 pop 有相似之处,但是 popitem 不用写参数,但是它删除的不是最后一个,因为我们说过字典没有顺序,所以 popitem 是随机删除一个,至于删除谁,完全看命。

    5.update

    update 就是更新字典,参数可以是字典或者某种可迭代的对象,至于什么是可迭代这里你可以先知道这么个词,之后我们会说到,它的返回值是 None,你也可以理解成没有返回值。

    >>> my_dict = {'name':'rocky','like':'python'}
    >>> first = {'age':23}
    >>> my_dict.update(first)
    >>> my_dict
    {'name': 'rocky', 'like': 'python', 'age': 23}
    >>> first
    {'age': 23}
  • 相关阅读:
    STM32 printf 方法重定向到串口UART
    STM32F401CCU6与MFRC522接线及读取示例
    Keil MDK5 STM32F401CCU6开发环境配置
    Keil MDK5 STM32F103C8T6开发环境配置
    RFID EPC Class1 Gen2电子标签笔记
    Ubuntu20.04下的ESP8266环境
    Centos7使用memtester测试内存
    内核5.4以上, Realtek 8111网卡初始化失败
    Centos7的KVM安装配置详解
    Python抓取网页例子
  • 原文地址:https://www.cnblogs.com/clemente/p/10256023.html
Copyright © 2011-2022 走看看