• python大法好——字典、集合


    字典

    前面我们说过列表,它适合于将值组织到一个结构中并且通过编号对其进行引用。字典则是通过名字来引用值的数据结构,并且把这种数据结构称为映射,字典中的值没有特殊的顺序,都存储在一个特定的键(key)下,键可以是数字、字符串甚至元组。字典也是python中唯一内建的映射类型。

    特性:

    key-value结构。

    key必须可hash,且必须为不可变。

    数据类型必须为一。

    可存放任意多值可修改,可以不唯一。

    无序

    查询速度快。

    方法:

    (1) get

               get是个更宽松的访问字典项的方法,当get访问一个不存在的键时,不会报错而会得到None值,它适用在程序  中用户若输入的是我们没有准备的值时可以作出合理的反应。

     (2) update

                update方法可以利用一个字典项更新另外一个字典,提供的字典中的项会被添加到旧的字典中,若有相同的项则会进行覆盖。

    (3) fromkeys

                fromkeys方法使用给定的键建立新的字典,每个键都对应一个默认的值None(也可以自己设立默认值),可以和dict函数一起使用。

     (4) setdefault

               setdefault方法与get方法类似,可以获得给定键的值,除此之外它还能在字典中不含有给定键的情况下设定相应的键值。

      (5) items和iteritems

               items方法将字典中所有的项以列表方式返回,但是在返回的时候没有特定的顺序;iteritems方法的作用大致相同,但是会返回一个迭代器对象而不是列表。

     (6) copy

               copy方法返回一个具有相同键—值对的新字典(这个方法实现的是浅复制)

    注意: 在副本中替换值的时候原始字典不受影响,但是当修改副本中的值的时候原始字典也会改变。

       (7) pop和popitem

               pop方法用来获得对应于给定键的值,然后将键—值对从字典中删除。

               popitem方法类似于list.pop,后者会弹出列表的最后一个元素,但不同的是因为字典没有顺序,所以popitem会弹出随机的项。

      (8) clear

                clear方法清除字典中的所有项,无返回值

    2.集合

    在 Python 中,集合由内置的 set 类型定义。

    要创建集合,需要将所有项(元素)放在花括号({})内,以逗号(,)分隔。

    >>> s = {'P', 'y', 't', 'h', 'o', 'n'}
    >>> type(s)
    <class 'set'>

    集合可以有任意数量的元素,它们可以是不同的类型(例如:数字、元组、字符串等)。但是,集合不能有可变元素(例如:列表、集合或字典)。

    >>> s = {1, 2, 3}  # 整形的集合
    >>> 
    >>> s = {1.0, 'Python', (1, 2, 3)}  # 混合类型的集合
    >>> 
    >>> s = set(['P', 'y'])  # 从列表创建
    >>>
    >>> s = {1, 2, [3, 4]}  # 不能有可变元素
    ...
    TypeError: unhashable type: 'list'

    创建空集合比较特殊。在 Python 中,空花括号({})用于创建空字典。要创建一个没有任何元素的集合,使用 set() 函数(不要包含任何参数)。

    >>> d = {}  # 空字典
    >>> type(d)
    <class 'dict'>
    >>> 
    >>> s = set()  # 空集合
    >>> type(s)
    <class 'set'>

    集合之间也可进行数学集合运算(例如:并集、交集等),可用相应的操作符或方法来实现。

    子集

    子集,为某个集合中一部分的集合,故亦称部分集合。

    使用操作符 < 执行子集操作,同样地,也可使用方法 issubset() 完成。

    >>> C = set('ab')
    >>> 
    >>> C < A
    True
    >>> 
    >>> C < B
    False
    >>> 
    >>> C.issubset(A)
    True

    并集

    一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。

    使用操作符 | 执行并集操作,同样地,也可使用方法 union() 完成。

    >>> A | B
    {'e', 'f', 'd', 'c', 'b', 'a'}
    >>> 
    >>> A.union(B)
    {'e', 'f', 'd', 'c', 'b', 'a'}

    差集

    A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合

    使用操作符 - 执行差集操作,同样地,也可使用方法 difference() 完成。

    >>> A - B
    {'b', 'a'}
    >>> 
    >>> A.difference(B)
    {'b', 'a'}

    对称差

    两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。

    使用 ^ 操作符执行差集操作,同样地,也可使用方法 symmetric_difference() 完成。

    >>> A ^ B
    {'b', 'e', 'f', 'a'}
    >>> 
    >>> A.symmetric_difference(B)
    {'b', 'e', 'f', 'a'}

    1.add 向集合中添加元素

    2.clear 清空集合

    3.copy 返回集合的浅拷贝

    4.pop 删除并返回任意的集合元素(如果集合为空,会引发 KeyError)

    5.remove 删除集合中的一个元素(如果元素不存在,会引发 KeyError)

    6.discard 删除集合中的一个元素(如果元素不存在,则不执行任何操作)

    7.intersection 将两个集合的交集作为一个新集合返回

    8.union 将集合的并集作为一个新集合返回

    9.difference 将两个或多个集合的差集作为一个新集合返回

    10. symmetric_difference 将两个集合的对称差作为一个新集合返回(两个集合合并删除相同部分,其余保留)

  • 相关阅读:
    Eclipse报告内存不足和PermSize space错误,Eclipse死掉的解决办法
    jquery插件:文字滚动和google地图位置选择搜索
    CGI、ISAPI和FastCGI三种配置方式
    240多个jQuery插件
    调用外部命令不弹出窗口示例
    将DataSet变化保存到数据源
    Fill()方法和Conn.Open()
    SqlDataAdapter的DeleteCommand属性
    SqlDataAdapter的InsertCommand属性
    使用数据集和XML
  • 原文地址:https://www.cnblogs.com/lchh/p/9368003.html
Copyright © 2020-2023  润新知