• 7基本数据类型4


    基本数据类型4

    字典

    集合

    1:字典

    字典是Python语言中唯一的映射类型。

    定义:{key1:value1,key2:value2}

    1、键与值用冒号":"分开;

    2、项与项用逗号","分开;

    特性:

    1.key-value结构

    2.key必须可hash、且必须为不可变数据类型、必须唯一

    3.可存放任意多个值、可修改、可以不唯一

    4.无序

    字典的创建与常见操作

    字典的创建:

    person = {"name": "alex", 'age': 20}

    #

    person = dict(name='seven', age=20)

    #

    person = dict({"name": "egon", 'age': 20})

    #

     

    person = dict((['name','苑昊'],['文周',18]))

    {}.fromkeys(seq,100) #不指定100默认为None

    #注意

    >>> dic={}.fromkeys(['k1','k2'],[])

    >>> dic

    {'k1': [], 'k2': []}

    >>> dic['k1'].append(1)

    >>> dic

    {'k1': [1], 'k2': [1]}

    字典的常见操作

    键、值、键值对

        1、dic.keys() 返回一个包含字典所有KEY的列表;

        2、dic.values() 返回一个包含字典所有value的列表;

        3、dic.items() 返回一个包含所有(键,值)元祖的列表;

        4、dic.iteritems()、dic.iterkeys()、dic.itervalues() 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表;

    新增

        1、dic['new_key'] = 'new_value';

        2、dic.setdefault(key, None) ,如果字典中不存在Key键,由 dic[key] = default 为它赋值;_

    删除

        1、dic.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;

        2、dic.clear() 删除字典中的所有项或元素;

    修改

        1、dic['key'] = 'new_value',如果key在字典中存在,'new_value'将会替代原来的value值;

        2、dic.update(dic2) 将字典dic2的键值对添加到字典dic中

    查看

        1、dic['key'],返回字典中key对应的值,若key不存在字典中,则报错;

        2、dict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)

    循环

        1、for k in dic.keys()

        2、for k,v in dic.items()

        3、for k in dic

    长度

        1、len(dic)

    字典的工厂函数:

    class dict(object):

    """

    dict() -> new empty dictionary

    dict(mapping) -> new dictionary initialized from a mapping object's

    (key, value) pairs

    dict(iterable) -> new dictionary initialized as if via:

    d = {}

    for k, v in iterable:

    d[k] = v

    dict(**kwargs) -> new dictionary initialized with the name=value pairs

    in the keyword argument list. For example: dict(one=1, two=2)

    """

    def clear(self): # real signature unknown; restored from __doc__

    """ D.clear() -> None. Remove all items from D. """

    pass

     

    def copy(self): # real signature unknown; restored from __doc__

    """ D.copy() -> a shallow copy of D """

    pass

     

    @staticmethod # known case

    def fromkeys(*args, **kwargs): # real signature unknown

    """ Returns a new dict with keys from iterable and values equal to value. """

    pass

     

    def get(self, k, d=None): # real signature unknown; restored from __doc__

    """ D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. """

    pass

     

    def items(self): # real signature unknown; restored from __doc__

    """ D.items() -> a set-like object providing a view on D's items """

    pass

     

    def keys(self): # real signature unknown; restored from __doc__

    """ D.keys() -> a set-like object providing a view on D's keys """

    pass

     

    def pop(self, k, d=None): # real signature unknown; restored from __doc__

    """

    D.pop(k[,d]) -> v, remove specified key and return the corresponding value.

    If key is not found, d is returned if given, otherwise KeyError is raised

    """

    pass

     

    def popitem(self): # real signature unknown; restored from __doc__

    """

    D.popitem() -> (k, v), remove and return some (key, value) pair as a

    2-tuple; but raise KeyError if D is empty.

    """

    pass

     

    def setdefault(self, k, d=None): # real signature unknown; restored from __doc__

    """ D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D """

    pass

     

    def update(self, E=None, **F): # known special case of dict.update

    """

    D.update([E, ]**F) -> None. Update D from dict/iterable E and F.

    If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]

    If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v

    In either case, this is followed by: for k in F: D[k] = F[k]

    """

    pass

     

    def values(self): # real signature unknown; restored from __doc__

    """ D.values() -> an object providing a view on D's values """

    pass

    2:基本数据类型—集合

    集合是一个数学概念:由一个或多个确定的元素所构成的整体叫做集合。

    集合中的元素有三个特征:

    1.确定性(元素必须可hash)

    2.互异性(去重)

    3.无序性(集合中的元素没有先后之分),如集合{3,4,5}和{3,5,4}算作同一个集合。

    注意:集合存在的意义就在于去重和关系运算

    用集合解决问题

    l= {'张三','李四','老男孩'} #集合定义

    p = {'张三','李四','alex'}

    l_p = l&p #集合求交集

    print(l_p)

    集合的定义

    l= {1,2,3,1} #此处应说明集合"去重"的效果

    #定义可变集合

    >>> set_test=set('hello') #此处应说明集合的"无序性"

    >>> set_test

    {'l', 'o', 'e', 'h'}

    #改为不可变集合frozenset

    >>> f_set_test=frozenset(set_test)

    >>> f_set_test

    frozenset({'l', 'e', 'h', 'o'})

    集合的关系运算:

    交集 & intersection , 并集 | union , 差集 - difference , 对称差集 ^ symmetric_difference ,

    包含关系: in , not in 判断某元素是否在集合内

    == , != 判断两个集合是否相等

    判断两个集合的关系:

    set.isdisjoint(s):判断两个集合是不是不相交

    set.issuperset(s):判断集合是不是包含其他集合,等同于a>=b

    set.issubset(s):判断集合是不是被其他集合包含,等同于a<=b    

    并集:

    >>> a = { 1 , 2 , 3 }

    >>> b = { 1 , 2 , 4}

    >>> print (a.union(b))

    {1, 2, 3, 4}

    >>> a|b

    {1, 2, 3, 4}

    交集:

    >>> a&b

    {1, 2}

    >>> a.intersection(b)

    {1, 2}

    差集:

    >>> a - b

    {3}

    >>> a.difference(b)

    {3}

    对称差集:

    >>> a^b

    {3, 4}

    >>> a.symmetric_difference(b)

    {3, 4}

    包含:in , not in

    >>> for i in a :

    ... print (i in b, i)

    ...

    True 1

    True 2

    False 3

    >>> a == b

    False

    集合的关系:

    >>> a

    {1, 2, 3}

    >>> d

    {5, 6, 7}

    >>> a.isdisjoint(b) # 是不是不相交

    False # 不是的

    >>> a.isdisjoint(d) # 是不是不相交

    True # 是的

    >>> a.issuperset(c)

    True

    >>> c.issubset(a)

    True

    菜鸟的自白
  • 相关阅读:
    postgresql获取随机数
    windows环境中Tomcat实现开机自启动
    让Tomcat支持中文路径名和中文文件名
    CentOS 环境变量编辑、保存、立即生效的方法
    eclipse/intellij idea 远程调试hadoop 2.6.0
    利用Spring的@Async异步处理改善web应用中耗时操作的用户体验
    ssh 免密码设置失败原因总结
    hadoop 2.6伪分布安装
    weblogic.nodemanager.common.ConfigException: Native version is enabled but nodemanager native library could not be loaded 解决办法
    velocity模板引擎学习(3)-异常处理
  • 原文地址:https://www.cnblogs.com/lzjloveit/p/10585040.html
Copyright © 2020-2023  润新知