• Python基础08 字典


    字典是Python中唯一的内置映射类型。

    Python3.6(包含)之后,所有的普通dict()字典都变为有序的了。

    参考文章:https://www.kingname.info/2019/07/13/python-dict/

    一、创建字典

    1、字典由键及其对应的值组成

    >>> dict = {'Mike': 40, 'John': 30}

    在字典中,键必须是独一无二的。

    字典中的键可以是任何不可变的类型,如整数、浮点数、字符串和元组。

    2、函数dict

    可使用函数dict(实际是一个类)从其他键-值对序列或者其他字典创建字典。

    >>> lst = [('Mike', 40), ('John', 30)]
    >>> d = dict(lst)
    >>> d
    {'Mike': 40, 'John': 30}
    >>>
    >>>
    >>> d2 = dict(d)
    >>> d2
    {'Mike': 40, 'John': 30}
    >>>

    还可使用关键字实参来调用这个函数:

    >>> d = dict(name='Mike', age=40)
    >>> d
    {'name': 'Mike', 'age': 40}

    二、基本的字典操作

    字典的基本行为在很多方面都类似于序列。

    >>> d = {'Mike': 40, 'John': 30}

    1、len(d):返回字典d包含的项数。

    >>> len(d)
    2

    2、d[k]:返回与键k相关联的值。如果不存在会发生异常。

    >>> d['Mike']
    40
    >>> d['Mik']
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'Mik'

    3、d[k] = v:将值v关联到键k。

    >>> d['Mike'] = 50
    >>> d
    {'Mike': 50, 'John': 30}

    4、del d[k]:删除键为k的项。如果不存在会发生异常。

    >>> del d['Mike']
    >>> d
    {'John': 30}
    >>> del d['Mik']
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'Mik'

    5、k in d:检查字典d是否包含键为k的项。

    >>> 'John' in d
    True

    三、字典方法

    1、clear

    方法clear删除所有的字典项。

    >>> d = {'Mike': 40, 'John': 30}
    >>> d.clear()
    >>> d
    {}

    2、copy(浅拷贝)

    方法copy返回一个新字典,这个方法执行的是浅拷贝,值本身是原件而非副本。

    >>> x = {'username': 'admin', 'machines': ['a', 'b', 'c']}
    >>> y = x.copy()
    >>> y
    {'username': 'admin', 'machines': ['a', 'b', 'c']}
    >>> y['username'] = 'guido'
    >>> y['machines'].remove('a')
    >>> y
    {'username': 'guido', 'machines': ['b', 'c']}
    >>> x
    {'username': 'admin', 'machines': ['b', 'c']}
    >>>

    如上所见,当替换副本中的值时,原件不受影响;

    然而,如果修改副本中的值,原件也将发生变化。

    3、deepcopy(深拷贝)

    深拷贝会同时复制值及其包含的所有值。

    >>> x = {'username': 'admin', 'machines': ['a', 'b', 'c']}
    >>> from copy import deepcopy
    >>> y = deepcopy(x)
    >>> y['username'] = 'guido'
    >>> y['machines'].remove('a')
    >>> y
    {'username': 'guido', 'machines': ['b', 'c']}
    >>> x
    {'username': 'admin', 'machines': ['a', 'b', 'c']}

    4、fromkeys

    方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是None。

    >>> dict.fromkeys(['name', 'age'])
    {'name': None, 'age': None}

    也可以提供默认值:

    >>> dict.fromkeys(['name', 'age'], 'unknown')
    {'name': 'unknown', 'age': 'unknown'}

    5、get

    方法get获取指定键对应的值,如果不存在则返回None,也可以指定默认值。

    >>> d.get('Mike')
    40
    >>> d.get('Mik')
    >>> d.get('Mik', 'N/A')
    'N/A'

    6、items

    方法items返回一个字典视图,其中包含所有字典项,可用于迭代。其中每个元素都是(key, value)的形式。

    可对视图进行长度以及成员资格的检查。

    >>> d = {'Mike': 40, 'John': 30}
    >>> d.items()
    dict_items([('Mike', 40), ('John', 30)])
    >>> it = d.items()
    >>> len(it)
    2
    >>> ('Mike', 40) in it
    True

    也可以转换成列表。

    >>> list(d.items())
    [('Mike', 40), ('John', 30)]

    7、keys

    方法keys返回一个字典视图,其中包含指定字典中的键。

    >>> d = {'Mike': 40, 'John': 30}
    >>> d.keys()
    dict_keys(['Mike', 'John'])

    8、values

    方法values返回一个字典视图,其中包含指定字典中的值。

    >>> d = {'Mike': 40, 'John': 30}
    >>> d.values()
    dict_values([40, 30])

    9、pop

    方法pop可用于获取与指定键相关联的值,并将该键-值对从字典中删除。如果不存在会发生异常。

    >>> d = {'Mike': 40, 'John': 30}
    >>> d.pop('Mike')
    40
    >>> d
    {'John': 30}
    >>> d.pop('Mik')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'Mik'

    10、popitem

    方法popitem随机地弹出一个字典项。从Python3.6开始会弹出最后一个元素。

    >>> d = {'Mike': 40, 'John': 30, 'Jack': 20}
    >>> d.popitem()
    ('Jack', 20)

    11、setdefault

    方法setdefault类似get,因为它也获取与指定键相关联的值。

    >>> d = {'Mike': 40, 'John': 30, 'Jack': 20}
    >>> d.setdefault('Mike')
    40

    如果字典不包含指定的键,则在字典中添加指定的键-值对,默认为None。

    >>> d.setdefault('Mik')
    >>> d
    {'Mike': 40, 'John': 30, 'Jack': 20, 'Mik': None}
    >>> d.setdefault('Jac', 18)
    18
    >>> d
    {'Mike': 40, 'John': 30, 'Jack': 20, 'Mik': None, 'Jac': 18}

    12、update

    方法update使用一个字典中的项来更新另一个字典。

    >>> d = {'Mike': 40, 'John': 30, 'Jack': 20}
    >>> e = {'Mike': 50, 'Rose': 18}
    >>> d.update(e)
    >>> d
    {'Mike': 50, 'John': 30, 'Jack': 20, 'Rose': 18}

    如果当前字典包含键相同的项,就更新它。

    如果当前字典不包含对应的项,就添加它。

    四、遍历字典

    1、遍历键值

    >>> d = {'Mike': 40, 'John': 30, 'Jack': 20}
    >>> for key in d:
    ...     print(key + ': ' + str(d[key]))
    ...
    Mike: 40
    John: 30
    Jack: 20
    >>>
    >>>
    >>> for key in d.keys():
    ...     print(key + ': ' + str(d[key]))
    ...
    Mike: 40
    John: 30
    Jack: 20
    for key infor key in d.keys() 这两种遍历方法在使用上是完全等价的。

    2、遍历内容值

    >>> for value in d.values():
    ...     print(value)
    ...
    40
    30
    20

    3、遍历字典项

    >>> for key, value in d.items():
    ...     print(key + ': ' + str(value))
    ...
    Mike: 40
    John: 30
    Jack: 20

    五、将字符串格式设置功能用于字典

    通过在字典中存储一系列命名的值,可让格式设置更容易些。

    必须使用format_map来指出你将通过一个映射来提供所需的信息。

    >>> d = {'Mike': 40, 'John': 30}
    >>> "Mike's age is {Mike}".format_map(d)
    "Mike's ange is 40"
  • 相关阅读:
    将现有MySQL数据库改为大小写不敏感
    在Windows中玩转Docker Toolbox
    使用ABP EntityFramework连接MySQL数据库
    数据库设计范式2——BC范式和第四范式
    让OData和NHibernate结合进行动态查询
    文档在线预览的实现
    有哪些老鸟程序员知道而新手不知道的小技巧?自我感受
    EEPROM的概念接口类型及软件实例
    flash的几种模式Normal Mode、DUAL Mode、Quad Mode的概念和区别
    ESP8266 打造一款物联网产品---搭建环境编译及烧录
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/12447589.html
Copyright © 2020-2023  润新知