• Python学习笔记004_字典_集合


    >>> # 字典 用大括号表示, 它是影射类型,相当于java中的Map

    >>>
    >>> dict1 = {'李宁': '一切皆有可能', '耐克':'Just do it','阿迪达斯':'Impossible is nothing'}
    >>> dict1
    {'阿迪达斯': 'Impossible is nothing', '李宁': '一切皆有可能', '耐克': 'Just do it'}
    >>>
    >>> # 根据键取字典的值
    >>> dict1['李宁']
    '一切皆有可能'
    >>>
    >>> dict2 = {1:'one',2:'two',3:'three'}
    >>> dict2[1]
    'one'
    >>>
    >>> # 空字典
    >>> dict3 = {}
    >>> dict3
    {}
    >>> # 除了上面的之外,还有其它创建字典的方式  使用构造创建 字典
    >>>
    >>> dict4 = dict((('F',70),('i',105),('s',115),('h',104)))
    >>> dict4
    {'s': 115, 'F': 70, 'h': 104, 'i': 105}
    >>>
    >>> # 用参数的形式创建
    >>>
    >>> dict5= dict(黄红义='尿频、尿急、尿不净',杨伟='伟哥')
    >>> dict5
    {'黄红义': '尿频、尿急、尿不净', '杨伟': '伟哥'}
    >>>
    >>> # 如果键存在就覆盖,如果不存在就添加,与java的Map一样
    >>> dict5['黄红义'] = '是一个典型的猥琐男'
    >>> dict5
    {'黄红义': '是一个典型的猥琐男', '杨伟': '伟哥'}
    >>> dict5['awei'] = '哈哈'
    >>> dict5
    {'awei': '哈哈', '黄红义': '是一个典型的猥琐男', '杨伟': '伟哥'}
    >>>

    >>>
    >>> # dict 有很多有用的内置函数
    >>> # fromkeys 为指定的键创建相同的值,如果不指定值则都是None
    >>> # fromkeys 是创建出一个dict
    >>> dict6 = {}
    >>> dict6.fromkeys((1,2,3))
    {1: None, 2: None, 3: None}
    >>> dict6.fromkeys((1,2,3),'Number')
    {1: 'Number', 2: 'Number', 3: 'Number'}
    >>>
    >>> # keys 获取所有的key
    >>> for eachKey in dict5.keys() :
    print(eachKey)


    awei
    黄红义
    杨伟
    >>> for eachValue in dict5.values():
    print(eachValue)


    哈哈
    是一个典型的猥琐男
    伟哥
    >>> for eachItem in dict5.items():
    print(eachItem)


    ('awei', '哈哈')
    ('黄红义', '是一个典型的猥琐男')
    ('杨伟', '伟哥')
    >>>
    >>> # 除了前面介绍的使用 ditc5[1]这种形式获取值之外,还可以使用 get()方法
    >>> # dict5[1],这种形式,如果不存在这样的key会报错,但是get不会
    >>>
    >>> dict5['yangw']
    Traceback (most recent call last):
    File "<pyshell#57>", line 1, in <module>
    dict5['yangw']
    KeyError: 'yangw'
    >>> dict5.get('yangw')
    >>> print(dict5.get('yangw'))
    None
    >>> # 也可以自己去设置没有找到的值
    >>> dict5.get('yangw','么有')
    '么有'
    >>> dict5.get('awei')
    '哈哈'
    >>>
    >>> # 它也可以使用 in not in
    >>> 'yangw' in dict5
    False
    >>> 'awei' in dict5
    True
    >>> # 清空字典 clear()
    >>> dict5.clear()
    >>> dict5
    {}
    >>> # pop 给定键,弹出值
    >>> dict5= dict(黄红义='尿频、尿急、尿不净',杨伟='伟哥')
    >>> dict5
    {'黄红义': '尿频、尿急、尿不净', '杨伟': '伟哥'}
    >>> dict5.pop('黄红义')
    '尿频、尿急、尿不净'
    >>> dict5
    {'杨伟': '伟哥'}

    >>> # popitem()是弹出一个项
    >>> # 它是随机弹出
    >>> dict5.popitem()
    ('杨伟', '伟哥')
    >>> dict5
    {}

    >>>
    >>> # setdefault() 是一种添加键值的方式,如果不指定值默认就是None
    >>>
    >>> dict5.setdefault("haha")
    >>> dict5
    {'haha': None}
    >>> dict5.setdefault('nimei','halou')
    'halou'
    >>> dict5
    {'haha': None, 'nimei': 'halou'}
    >>> # update 是用影射关系或者字典来更新一个字典
    >>>

     字典当中的拷贝方法copy()是浅拷贝, 如果需要使用深拷贝,使用 copy模块的 deepcopy()方法.

    >>>
    >>> # 集合中的值是唯一的, 它与Java中的Set是一样的
    >>> num={}
    >>> type(num)
    <class 'dict'>
    >>> num2 = {1,2,3,4}
    >>> type(num2)
    <class 'set'>
    >>>
    >>> num2 = {1,2,3,4,3,2}
    >>> num2
    {1, 2, 3, 4}
    >>> # 集合是无序的
    >>>
    >>> # 创建集合的方式 一种是直接把一堆元素用花括号括起来 一种是使用set工厂函数
    >>>

    >>>
    >>> set1 = set([1,2,5,6,2,5])
    >>> set1
    {1, 2, 5, 6}
    >>> # set 的构造参数是一个可迭代的对象(字符串,元祖,数组) ,也可以是空的
    >>>
    >>> # add添加一个元素
    >>> set1.add(10)
    >>> set1
    {1, 2, 10, 5, 6}
    >>> set1.remove(10)
    >>> set1
    {1, 2, 5, 6}
    >>>
    >>>
    >>> #
    >>> num1 = [1,2,3,3,4,4,4]
    >>> num2 = list(set(num1))
    >>> num2
    [1, 2, 3, 4]
    >>> # 可以使用in not in, 判断元素是否在集合中
    >>> # 可以使用for将元素一一迭代出来
    >>> # frozen: 冰冻的,冻结的
    >>> # 不可改变的集合 frozenset
    >>>
    >>> num3 = frozenset([1,2,3,4,5])
    >>> num3.add(6)
    Traceback (most recent call last):
    File "<pyshell#130>", line 1, in <module>
    num3.add(6)
    AttributeError: 'frozenset' object has no attribute 'add'
    >>>

    集合还有一些方法比较有用

    a & b #求交集 a.intersection(b)

    a | b #求并集 a.union(b)

    a - b #求差集 a.difference(b)

    a ^ b #求对称差集 a.symmetric_difference(b)

    a.issubset(b) #a是b的子集

    a.issuperset(b) #a是否包含b

    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    作业三
    源代码版本管理与项目管理软件的认识与github的注册
    每周更新的学习进度表
    电脑四则运算出题
    软件工程问题
    自我介绍
    2016.2.14-2016.2.21 中大信(北京)工程造价咨询有限公司实习有感
    《软件工程》课程总结
    结对编程项目---四则运算
    作业三:代码规范、代码复审、PSP
  • 原文地址:https://www.cnblogs.com/xin1006/p/4963405.html
Copyright © 2020-2023  润新知