• Python3字典与集合


    一、Python3字典

    字典是另一种可变容器模型,且可存储任意类型对象
    字典的每个键值(key=>value)对用冒号":"分割,每个键值对之间用逗号","分割,整个字典包括在花括号"{}"中,格式如下所示:

    dict = {key1:value1,key2:value2,......,keyN:valueN}

    注意:
      键必须是唯一的,但值则不必
      值可以取任何数据类型,但键则必须是不可变的,如: 字符串,数字或元组

    1、创建一个字典

    dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
    print(dict)
    输出结果为:
    {'name': 'lrving', 'gender': 'boy', 'age': 23, 'identity': 'student', 'university': 'tsinghua'}

    2、访问字典里的值

    dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
    print(dict['name'])  #访问字典dict中键name的值
    print(dict['age'])   #访问字典dict中键age的值
    输出结果为:
    lrving
    23 

    3、修改字典

    dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
    print(dict)
    dict['age'] = 20  #更新键age的值
    dict['university'] = 'Peking University'  #更新键university的值
    print(dict)
    输出结果为:
    {'name': 'lrving', 'gender': 'boy', 'age': 23, 'identity': 'student', 'university': 'tsinghua'}
    {'name': 'lrving', 'gender': 'boy', 'age': 20, 'identity': 'student', 'university': 'Peking University'} 

    4、删除字典元素

    能删单一的元素也能清空字典,清空只需一项操作

    4.1、删除单一的键

    dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
    del dict['university'] #删除键university
    print(dict)
    输出结果为:
    {'name': 'lrving', 'gender': 'boy', 'age': 23, 'identity': 'student'}

    4.2、清空字典

    dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
    dict.clear() #清空字典
    print(dict)
    输出结果为:
    {}

    4.3、删除字典

    dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
    del dict
    print(dict)
    输出结果为:(但这会引发一个异常,因为用执行 del 操作后字典不再存在)
    Traceback (most recent call last):
    File "/Users/liwenfeng/PycharmProjects/Python/study.py", line 157, in <module>
    print(dict['name'])
    TypeError: 'type' object is not subscriptable
    

    说明字典dict已经被删除了

    5、字典键的特性

    字典值可以是任何的python对象,既可以是标准的对象,也可以是用户定义的,但键不行
    两个重要的点需要记住:

    5.1、在一个字典中不允许同一个键出现两次,创建字典时如果同一个键被赋值两次,则只识别后面的值,示例如下:

    dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','age':34,'name':'james'}  #键name和age出现两次
    print(dict)
    输出结果为:
    {'name': 'james', 'gender': 'boy', 'age': 34, 'identity': 'student'}  #可以看出键name和age只识别了后面的两个值james和34

    5.2、键必须是不可变的,所以可以用数字,字符串和元组充当,而列表则不可行,如下示例:

    dict = {['name']:'lrving','gender':'boy',['age']:23}
    print(dict['name'])
    输出结果为:
    Traceback (most recent call last):
    File "/Users/liwenfeng/PycharmProjects/Python/study.py", line 158, in <module>
    dict = {['name']:'lrving','gender':'boy',['age']:23}
    TypeError: unhashable type: 'list'

    由此可看出在字典中使用列表是不可行的

    6、字典内置函数&方法

    6.1、len(dict): 计算字典元素个数,即键的总数

    dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
    print(len(dict))
    输出结果为:
    5

    6.2、str(dict): 输出字典,以可打印的字符串表示

    dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
    print(str(dict))
    输出结果为:
    {'name': 'lrving', 'gender': 'boy', 'age': 23, 'identity': 'student', 'university': 'tsinghua'}

    6.3、type(variable): 返回输入的变量类型,如果变量是字典就返回字典类型

    dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
    print(type(dict))
    输出结果为:
    <class 'dict'>

    7、Python字典包含了以下内置方法

    7.1、radiansdict.clear()

    删除字典内所有元素

    7.2、radiansdict.copy()

    返回一个字典的浅复制

    7.3、radiansdict.fromkeys()

    创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

    7.4、radiansdict.get(key, default=None)

    返回指定键的值,如果值不在字典中返回default值

    7.5、key in dict

    如果键在字典dict里返回true,否则返回false

    7.6、radiansdict.items()

    以列表返回可遍历的(键,值)元组数组

    7.7、radiansdict.keys()

    返回一个迭代器,可以使用"list()"来转换为列表

    7.8、radiansdict.setdefault(key, default=None)

    和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

    7.9、radiansdict.update(dict2)

    把字典dict2的键/值对更新到dict里

    7.10、radiansdict.values()

    返回一个迭代器,可以使用"list()"来转换为列表

    7.11、pop(key[,default])

    删除字典给定键"key"所对应的值,返回值为被删除的值;key值必须给出;否则,返回default值

    7.12、popitem()

    随机返回并删除字典中的最后一对键和值

    二、Python3集合

    集合(set)是一个"无序的不重复元素序列"
    如果集合中有两个或两个以上相同的元素,则在取值时只会取一个(去重)
    可以使用大括号"{ }"或者"set()"函数创建集合,注意: 创建一个空集合必须用"set()"而不是"{ }",因为"{ }"是用来创建一个空字典

    1、创建一个集合

    a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
    b = set('lrving11curry30klay11')
    print(a)
    print(b)
    输出结果为:
    {'kobe', 'heat', 'AD', 'wade', '3', 23, 'james', 'lakers'}
    {'n', 'g', '1', 'a', 'u', 'k', '0', 'l', 'i', 'v', '3', 'r', 'c', 'y'}

    2、集合的运算

    a = set('cbdcjdsuac')
    b = set('ejciaugejasye')
    print(a)
    print(b)
    print(a - b)  #a中包含但b中不包含的元素
    print(b - a)  #b中包含但a中不包含的元素
    print(a | b)  #a和b的并集
    print(a & b)  #a和b的交集
    print(a ^ b)  #不同时包含a和b的元素
    输出结果为:
    {'c', 'u', 'a', 's', 'j', 'b', 'd'}
    {'u', 'a', 's', 'y', 'j', 'e', 'i', 'c', 'g'}
    {'b', 'd'}
    {'i', 'y', 'g', 'e'}
    {'i', 'c', 'g', 'u', 'a', 's', 'y', 'j', 'e', 'b', 'd'}
    {'u', 'a', 's', 'j', 'c'}
    {'b', 'y', 'e', 'i', 'd', 'g'}

    2.1、类似列表推导式,同样集合支持集合推导式(Set comprehension)

    a = {x for x in 'abracadabra' if x not in 'abc'}
    print(a)
    输出结果为:
    {'d', 'r'}

    3、集合的基本操作(add;update)

    3.1、给一个集合添加一个元素

    方法一:

    a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
    a.add('NBA')
    print(a)
    输出结果为:
    {'heat', 'kobe', 'NBA', 'lakers', 'AD', 'wade', 'james', '3', 23}

    方法二:
    可以添加元素,且参数可以是列表,元组,字典等,语法格式如下

    a.update(x)   #"x"可以有多个,用逗号隔开

    示例:

    a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
    a.update([1,'lrving','Antetokounmpo']) #在集合中添加一个列表
    a.update((2,'six','five'))  #在集合中添加一个元组
    a.update({'name':'Howard'}) #在集合中添加字典时,只会添加字典的键,而不会是键的值
    print(a)
    输出结果为:
    {1, 'heat', 2, 'name', 'Antetokounmpo', 'five', 'AD', 'wade', 'kobe', 'lrving', 'six', 'lakers', 23, 'james', '3'}

    3.2、移除元素(remove,discard,pop)

    方法一:
    语法格式:

    a.remove(x) #将元素"x"从集合"a"中移除,如果元素不存在,则会发生错误

    示例:

    a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
    a.remove("heat")
    print(a)
    输出结果为:
    {'3', 'kobe', 'james', 23, 'lakers', 'wade', 'AD'}

    方法二:
    语法格式:

    a.discard(x)

    示例:

    a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
    a.discard('heat')
    a.discard('Cleveland') #当覆盖的元素在集合中不存在时,也不会报错
    print(a)
    输出结果为:
    {'3', 'james', 'lakers', 'wade', 23, 'kobe', 'AD'}

    方法三:
    语法格式:

    a.pop() #这种方法是随机删除集合中的某一个元素

    示例:

    a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
    a.pop() 
    print(a)
    输出结果为: (此结果是连续执行两次的结果)
    {'kobe', 'wade', 'AD', 'james', 23, 'heat', 'lakers'} #删除了'3'这个元素
    {'heat', 'wade', 'kobe', 'lakers', 'james', 23, '3'} #删除了'AD'这个元素

    注意: 在交互模式下,这种方法是删除集合的第一个元素----切记! 切记! 切记!

    3.3、计算集合元素个数

    a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
    print(len(a))
    输出结果为:
    8

    4、清空集合

    语法格式: 
    a.clear()
    a = {'lakers','james',23,'heat','wade','3','kobe','AD'} a.clear() print(a) 输出结果为: set()

    5、判断元素是否在集合中存在

    语法格式: 
    x in a #返回结果为True和Flase
    a = {'lakers','james',23,'heat','wade','3','kobe','AD'} print('cleveland' in a) print(23 in a) 输出结果为: False True

    6、集合内置方法完整列表

    6.1、add()

    为集合添加元素

    6.2、clear()

    移除集合中的所有元素

    6.3、copy()

    拷贝一个集合

    6.4、difference()

    返回多个集合的差集

    6.5、difference_update()

    移除集合中的元素,该元素在指定的集合也存在

    6.6、discard()

    删除集合中指定的元素

    6.7、intersection()

    返回集合的交集

    6.8、intersection_update()

    返回集合的交集

    6.9、isdisjoint()

    判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False

    6.10、issubset()

    判断指定集合是否为该方法参数集合的子集

    6.11、issuperset()

    判断该方法的参数集合是否为指定集合的子集

    6.12、pop()

    随机移除元素

    6.13、remove()

    移除指定元素

    6.14、symmetric_difference()

    返回两个集合中不重复的元素集合

    6.15、symmetric_difference_update()

    移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中

    6.16、union()

    返回两个集合的并集

    6.17、update()

    给集合添加元素

  • 相关阅读:
    svn忽略不需要同步的文件夹或文件
    Redis 字符串(String)
    Redis 数据类型
    Linux下安装rabbitMQ
    Windows平台下Git服务器搭建
    Linux下安装redis
    JVM调优总结
    Tomcat优化配置
    通过profile 用maven命令打不同配置的变量包
    Log4j日志配置说明
  • 原文地址:https://www.cnblogs.com/lrvingli/p/11800325.html
Copyright © 2020-2023  润新知