美文网首页
廖雪峰 | 2.5 字典(dict)与集合(set)

廖雪峰 | 2.5 字典(dict)与集合(set)

作者: 苦哈哈的柠檬水 | 来源:发表于2022-04-12 08:38 被阅读0次

    dict

    1,字典(dict)定义
    dict,全称dictionary,是由key-value 键值对组成的,可变的,无序的,key不重复的数据集合。在其他语言中也称为map,具有极快的查找速度。
    2,dictlist
    问:如何实现,根据同学的名字查找对应的成绩
    (1)list实现,以位置为媒介

    >>> names = ['Michael', 'Bob', 'Tracy']
    >>> scores = [95, 75, 85]
    >>> names.index('Bob')
    1
    >>> scores[1]
    75
    

    (2)dict实现

    • dict创建:{}
    >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
    >>> d['Michael']
    95
    
    • dict添加键值对
    >>>d['Adam'] = 67
    >>>d
    {'Michael': 95, 'Bob': 75, 'Tracy': 85, 'Adam': 67}
    
    • 替换keyvalue
    >>> d['Jack'] = 90
    >>> d['Jack']
    90
    >>> d['Jack'] = 88
    >>> d['Jack']
    88
    
    • pop(key)删除key-value
    >>> d.pop('Bob')
    75
    >>> d
    {'Michael': 95, 'Tracy': 85, 'Adam': 67, 'Jack': 88}
    
    • 判断key是否在dict中:in.get().get()中如果key不存在,可以返回None,或者自己指定的value
      注意:返回None的时候Python的交互环境不显示结果
    >>> 'Thomas' in d
    False
    >>> d.get('Thomas')
    >>> d.get('Thomas', -1)
    -1
    

    (3)dictlist比较

    • dict

    • 查找和插入的速度极快,不会随着key的增加而变慢;

    • 需要占用大量的内存,内存浪费多

    • list

    • 查找和插入的时间随着元素的增加而增加

    • 占用空间小,浪费内存很少

    3,注意

    • dictkey必须是不可变对象
    • dict根据key来计算value的存储位置,该算法称为哈希算法(Hash)

    哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。

    set

    1,集合(set)定义
    set是由一组key值组成,可变的,无序的,无重复元素的可迭代集合。可以看成数学意义上的无序和无重复元素的集合。
    2,set的创建与修改

    • set的创建:set([ ])
    >>> s = set([1, 2, 3])
    >>> s
    {1, 2, 3}
    
    • 重复元素自动被过滤
    >>> s = set([1, 1, 2, 2, 3, 3])
    >>> s
    {1, 2, 3}
    
    • 添加元素:add(key)
    >>> s.add(4)
    >>> s
    {1, 2, 3, 4}
    >>> s.add(4)
    >>> s
    {1, 2, 3, 4}
    
    • 删除元素:remove(key)
    >>> s.remove(4)
    >>> s
    {1, 2, 3}
    
    • set的交集&与并集|
    >>> s1 = set([1, 2, 3])
    >>> s2 = set([2, 3, 4])
    >>> s1 & s2
    {2, 3}
    >>> s1 | s2
    {1, 2, 3, 4}
    

    3,可变对象与不可变对象
    strtuple是不可变对象,而list是可变对象

    >>> a = 'abc'
    >>> a.replace('a', 'A')
    'Abc'
    >>> a
    'abc'
    >>> a = 'abc'
    >>> b = a.replace('a', 'A')
    >>> b
    'Abc'
    >>> a
    'abc'
    

    如上,不可变对象a、bstr,改变值后相当于赋值给新变量。

    >>> a = ['c', 'b', 'a']
    >>> a.sort()
    >>> a
    ['a', 'b', 'c']
    

    如上,可变变量a,其值是可以被修改

    相关文章

      网友评论

          本文标题:廖雪峰 | 2.5 字典(dict)与集合(set)

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