• Python字典_一种映射


    字典是一种映射

    字典就像是一个列表一样,但更加泛化了,是列表概念的推广。在列表里面,索引必须是整数;而在字典里面,你可以用几乎任何类型来做索引了。

    从字符串string,到列表 list,再到字典 dictionary,Python的变量类型就是一种泛化的过程,内容在逐步推广,适用范围更大了。

    字典包括一系列的索引,不过就已经不叫索引了,而是叫键,然后还对应着一个个值,就叫键值。每个键对应着各自的一个单独的键值,这种键和键值的对应关系也叫键值对,有时候也叫项。

    用数学语言来说,一个字典就代表了从键到键值的一种映射关系,所以你也可以说每个键映射到一个键值。

    dict这个函数创建一个没有项目的空字典。因为dict已经是内置函数的名字了,所以你应该避免用来做变量名:

    >>> test = dict()

    >>> test

    {}

    大括号,也叫花括号,就是{},代表了一个空字典。要在字典里面加项,可以使用方括号:

    >>> test['fruit'] = 'apple'

    这一行代码建立了一个项,这个项映射了键 'fruit' 到键值 'apple'。如果我们再来打印输出一下这个字典,就会看到里面有这样一个键值对了,键值对中间用冒号隔开了:

    >>> test['fruit'] = 'apple'

    >>> test

    {'fruit': 'apple'}

    这种输出的格式也可以用来输入。比如你可以这样建立一个有三个项的字典:

    >>> test ={'one':'jim', 'two':'lucy', 'three':'tom'}

    >>> test

    {'one': 'jim', 'two': 'lucy', 'three': 'tom'}

    有时候,你会发现字典中的项的顺序是不确定的。

    其实这不要紧,因为字典里面的元素并不是用整数索引来排列的。我们可以直接用键来查找对应的键值:

    >>> test ={'one':'jim', 'two':'lucy', 'three':'tom'}

    >>> test['one']

    'jim'

    >>> test['two']

    'lucy'

    >>> test['three']

    'tom'

    如果在字典中没有你指定的键,会提示键值错误:

    >>> test['four']

    Traceback (most recent call last):

      File "<stdin>", line 1, in <module>

    KeyError: 'four'

    len 函数也可以用在字典上,它会返回键值对的数目:

    >>> test ={'one':'jim', 'two':'lucy', 'three':'tom'}

    len(test)

    3

    in 运算符也适用于字典;你可以用它来判断某个键是不是存在于字典中(注意,是判断键,不能判断键值)。

    >>> 'one' in test

    True

    >>> 'jim' in test       #注意,是判断键,而不能判断键值

    False

    要判断键值是否在字典中,你就要用到 values 方法,这个方法会把键值返回,然后用 in 判断就可以了:

    >>> test ={'one':'jim', 'two':'lucy', 'three':'tom'}

    >>> vals = test.values()

    >>> 'jim' in vals

    True

    in 运算符在字典中和列表中有不同的算法。

    对列表来说,它就按照列表顺序搜索列表中的每一个元素。随着列表越来越长了,这种搜索就消耗更多的时间,才能找到正确的位置。

    而对字典来说,Python 使用了哈希表的算法,哈希表一种很厉害的特性:in运算符被使用于字典的时候,无论字典规模多大,无论里面的项有多少个,花费的时间都是基本一样的。

    结束。

  • 相关阅读:
    数组
    js--函数
    for循环
    运算符
    js 正则表达式
    js DOM节点
    js 字符串
    js 函数
    2018-12-26 课堂笔记 for循环
    2018-12-25 课堂笔记 js
  • 原文地址:https://www.cnblogs.com/liusingbon/p/13189530.html
Copyright © 2020-2023  润新知