zoukankan      html  css  js  c++  java
  • Python — 字典dict 和 集合set

    字典是无序的,字典这种数据结构是使用哈希技术实现的,所以可以使用某个键快速查找对应值。

    dict和set的key都是不可变对象

      对于不变对象来说,调用对象自身的任意方法,也不会改变对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

    字典特点:

              (1)键key必须是唯一的,但值value允许重复。

              (2)键key必须是不可变的,如字符串、数字或元组tuple,而值可以取任何数据类型。最常用的key是字符串。

                       由于List是可变的,所以键key不能是列表List,如下使用list的结果会报错:

    判断字典是否存在键Key

      (1)in 方法

          ‘Thomas’  in d     #返回 false,说明字典中的key值中不存在Thomas这个key

      (2)get(  ) 方法

            如果key 不存在,系统默认返回none,或者自己指定不存在时返回的value

          d.get('Thomas', -1)    #如果不存在就会返回-1,

    复制字典  d.copy( )

    更新字典  d.update( )

    修改字典

    (1) d.pop(key)   (2)del d[key]    (3)del d    (4)d.clear()

            (1)和(2)的效果一样,只是删除单个key.   对应的value也会从dict中删除

            (3)是完全删除字典及其定义,再使用print(d)时会报错.   

            (4)只删除字典里的元素,使用print(d)时仍会出现字典的结构,但没有字典元素。

                    

    print("创建字典d")
    d={'michael':98,'jane':79,'kang':60}
    print("创建时字典:",d)
    print("jane的分数:",d['jane'])
    print("kang的分数为:",d['kang'])
    
    print("修改键为kang对应的值:")
    d['kang']=83
    print("修改后的字典:",d)
    
    print("删除kang这个键:")
    d.pop('kang')
    print("删除某个键之后的字典:",d)
    
    print("另一种方式删除key")
    del d['jane']
    print("另一种方式删除key后的结果:",d)
    
    print('添加 lily这个键:')
    d['lily']=76
    print("添加某个键之后的字典:",d)
    
    print("判断某个键是否在字典中的两种方式,key in d 和 d.get(key)")
    print("第一种判断key是否在字典中:",'lily' in d)
    print("第二种判断key是否在字典中:",d.get('wen'))
    
    d.clear()
    print("使用字典的clear方法后查看字典结果为:",d)
    
    print("下面是使用字典的del方法后查看字典的结果为:发现是报错")
    del d
    print(d)

    下图是上图中代码的执行结果:

    注意: dict内部存放的顺序和key放入的顺序是没有关系的。

    和list相比,dict的特点:

       1,查找和插入的速度极快,不会随着key的增加而变慢

       2,需要占用大量的内存,内存浪费多

    list的特点:

       1,查找和插入的时间随着元素的增加而增加

       2,占用空间小,浪费内存很少

    综上,dict是用空间来换取时间的一种方法。

    set 部分

    1,set和dict类似,也是一组key的集合,但不存储value, 由于key不能重复,所以,在set中,没有重复的key

    2,创建set,需要list作为输入集合。  显示的顺序不表示set是有序的

    集合Set不支持索引和切片。

    集合set的符号是大括号,和字典的括号是一样的

    3,重复元素在set中会自动过滤。

    4,添加元素: add( key )

    5,删除元素:remove(key),   set.pop( ) ,  discard( x)是删除指定元素, update() 更新集合

    6,set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作

    1 s1 = set([1, 1, 2, 2, 3, 3])
    2 print('s1:',s1)
    3 s2 = set([2, 3, 4])
    4 print('s2:',s2)
    5 print('s1,s2的交集:',s1 & s2)
    6 print('s1,s2的并集:',s1 | s2)

  • 相关阅读:
    mysql事务
    python zip dict函数
    有关mysql索引
    hash(散列函数)
    Docker使用
    Mac终端命令自动补全
    python序列化与反序列化(json与pickle)
    python txt、excel读写
    python 正则表达式
    python进行数据预处理-pandas
  • 原文地址:https://www.cnblogs.com/bravesunforever/p/10229805.html
Copyright © 2011-2022 走看看