Python学习笔记--dict与set

作者: 琉璃飞瑾 | 来源:发表于2017-04-23 01:28 被阅读0次
    Python学习笔记--dict与set

    一. dict的形式

    dict={
       key:value,
       key:value,
       key:value,
       ...
    }

    (1) dict是集合,用len()可以计算集合的大小。

    (2) dict是用花括号{}表示的,注意与list(用方括号[]表示)和tuple(用元括号()表示)的区别

    (3) 最后一对键值末尾可以不加逗号

    注意: 一个 key-value 算一个长度

    二. 访问dict

    (1)方法一

    1.方式:

    通过 key 访问 dict 的value。

    2.举例:

    >>> d = {
    ...     'Adam': 95,
    ...     'Lisa': 85,
    ...     'Bart': 59
    ... }
    >>> print d['Adam']
    95

    3.注意:

    key是否正确,如不正确则会报错:NameError

    解决方法:

    if 'Paul' in d:
    ...     print d['Paul']
    ...
    >>>

    如果 ‘Paul’ 不存在,if语句判断为False,自然不会执行 print d[‘Paul’] ,从而避免了错误。

    (2)方法二

    1.方式:

    dict.get(key),key存在返回value,否则返回None

    2.举例:

    >>> print d.get('Bart')
    59
    >>> print d.get('Paul')
    None

    三.dict的特点

    (1) 速度快

    无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。

    缺点:占用内存大

    (2) 无序

    存储的key-value序对是没有顺序的!这和list不一样.

    d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
    }

    打印时:

    >>> print d
    {'Lisa': 85, 'Adam': 95, 'Bart': 59}

    打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。

    (3) 元素不可变

    作为 key 的元素必须不可变,value是否可变无所谓。

    list是可变的,就不能作为 key。

    {
    '123': [1, 2, 3],  # key 是 str,value是list
    123: '123',       # key 是 int,value 是 str
    ('a', 'b'): True
    # key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean
    }

    注: 一般key用字符串表示,因为用起来方便.

    (4) key是唯一的

    dict的作用是建立一组 key 和一组 value 的映射关系,则dict的key是不能重复的。

    四.dict的更新

    方式:

             通过dict[key]=value

             原因:dict是可变的

    举例:

    >>> d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
    }
    >>> d['Paul'] = 72 #通过dict[key]=value
    >>> print d
    {'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 59}

    注意:如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value

    五.dict的遍历

    方式:

             for key in dict的方式

    举例:

    >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
    >>> for key in d:
    ...     print key
    ...
    Lisa
    Adam
    Bart

    六. set

    为什么要用set:

    有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,这时,set就派上用场了。

    set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。

    set的适用场合:

    判断是否存在

    (1)set的创建

    方式:调用 set() 并传入一个 list,list的元素将作为set的元素

    >>> s = set(['A', 'B', 'C'])
    >>> print s
    set(['A', 'C', 'B'])

    注意:set内部存储的元素是无序的。

    (2)set的特点

    1.set不能包含重复的元素

    >>> s = set(['A', 'B', 'C', 'C'])
    >>> print s
    set(['A', 'C', 'B'])
    >>> len(s)
    3

    结果显示,set会自动去掉重复的元素,原来的list有4个元素,但set只有3个元素。

    2.不存储value

    判断一个元素是否在set中速度很快。

    3.key不可变

    4.无序

    (3)set的访问

    因为set存储的是无序集合,所以我们只能判断一个元素是否在set中。

    >>> s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
    >>> 'Bart' in s
    True
    >>> 'Bill' in s
    False

    (4)set的遍历

    方式:通过 for 循环实现。

    >>> s = set(['Adam', 'Lisa', 'Bart'])
    >>> for name in s:
    ...     print name
    ...
    Lisa
    Adam
    Bart

    (5)set的更新

    1.添加:set的add()方法

    >>> s = set([1, 2, 3])
    >>> s.add(4)
    >>> print s
    set([1, 2, 3, 4])

    注意:如果添加的元素已经存在于set中,add()不会报错,但是不会加进去

    2.删除:set的remove()方法

    >>> s = set([1, 2, 3, 4])
    >>> s.remove(4)
    >>> print s
    set([1, 2, 3])

    如果删除的元素不存在set中,remove()会报错

    用add()可以直接添加,而remove()前需要判断。

    相关文章

      网友评论

        本文标题:Python学习笔记--dict与set

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