美文网首页
Python学习——字典和集合

Python学习——字典和集合

作者: 心若鉴 | 来源:发表于2019-11-25 22:25 被阅读0次

    Python学习——字典和集合

    泛映射类型

    (1)什么是可散列的数据类型?
    如果一个对象是可散列的,那么在这个对象的生命周期中,它的散列值是不变的,而且这个对象需要实现__hash__()方法。另外可散列对象还要__eq__()方法,这样才能跟其他键作比较。如果两个可散列对象是相等的,那么它们的散列值一定是一样的。

    (2)什么是hash()函数呢?
    hash()用于获取一个对象(字符串或者数值等)的哈希值

    >>>>hash('test')
    >5675332754190376566
    >>>>hash(1)
    >1
    

    (3)可散列类型数据:
    原子不可变数据类型(str、bytes和数值类型)、frozenset、元组(包含的所有元素都是可散列类型)是可散列的。
    (4)什么是frozenset()函数呢?
    frozenset()返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
    class frozenset([iterable])(iterable——可迭代的对象,比如列表、字典、元组等)
    返回值:返回新的frozenset对象,如果不提供任何参数,默认会生成空集合。

    字典构造的多种方法

    >>> a = dict(one=1, two=2, three=3)
    >>> b = {'one': 1, 'two': 2, 'three': 3}
    >>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
    >>> d = dict([('two', 2), ('one', 1), ('three', 3)])
    >>> e = dict({'three': 3, 'one': 1, 'two': 2})
    >>> a == b == c == d == e
    True
    >>> a
    {'one': 1, 'two': 2, 'three': 3}
    >>> b
    {'one': 1, 'two': 2, 'three': 3}
    >>> c
    {'one': 1, 'two': 2, 'three': 3}
    >>> d
    {'two': 2, 'one': 1, 'three': 3}
    >>> e
    {'three': 3, 'one': 1, 'two': 2}
    

    常见的映射方法

    三种映射类型的方法列表

    dict defaultdict OrderedDict
    d.default_factory __missing__函数中被调用的函数,用以给未找到的元素设置*
    d.__delitem__(k) del d[k],移除键位k的元素
    d.fromkeys(it, [initial]) 将迭代器it里的元素设置为映射里的键,如果有initial参数,就把它作为这些键对应的值(默认是None)
    d.get(k, [deault]) 没有键k,则返回None或者deault
    d.move_to_end(k, [last]) 把键为k的元素移动到最靠前或者最靠后的位置(last的默认值是True)
    d.popitem() 随机返回一个键值对并从字典里移除它
    d.setdefault(k, [default]) 若字典里有键k,则把它对应的值设置为default,然后返回这个值;若无,则让d[k] = default,然后返回default
    d.update(m, [**kargs]) m可以是映射或者键值对迭代器,用来更新d里对应的条目

    注:只记录了自己觉得不太认识一些

    字典中items(),keys(),values()的区别

    >>> dict = {1:'a',2:'b',3:'c'}
    >>> dict.values() #values()获得的是字典里的所有值
    dict_values(['a', 'b', 'c'])
    >>> dict.keys() #keys()获得的是字典里的所有键
    dict_keys([1, 2, 3])
    >>> dict.items() #items()获得的是字典里的所有键值对
    dict_items([(1, 'a'), (2, 'b'), (3, 'c')])
    

    字典中处理找不到的键

    参见这篇文章,对《流畅的python》中例题的解析

    字典中处理找不到的键

    转载自https://blog.csdn.net/qq_43168521/article/details/102998994

    相关文章

      网友评论

          本文标题:Python学习——字典和集合

          本文链接:https://www.haomeiwen.com/subject/djdswctx.html