• 中文
    • English
  • 注册
  • 查看作者
    • 第八章:使用dict和set

      一. dict

      1. dict全称dictionary,类似于java中的map,使用键-值(key-value)存储,优点是速度极快,缺点是消耗内存。

      2. 从Python3.6开始,dict的插入变为有序

      3. 除了初始化时将数据赋予dict外,还可以直接通过key放入

      4. 一个key只能对应一个value,重复的key会替换之前的value值

      5. 如果key不存在,dict就会报错,可以通过in或者get方法判断key是否存在

      6. pop(key):删除指定key

      7. dict的key必须是不可变对象

      names = {'zhangjia':24,'zhangyi':24}
      # 通过key赋值
      names['zhangjie'] = 31
      
      # key不重复,重复值key会替换
      names['zhangjie'] = 32
      print(names)    #{'zhangjia': 24, 'zhangyi': 24, 'zhangjie': 32}
      print(names['zhangjia'])    #24
      
      #不存在的key会报错
      # print(names['xiaoming']) KeyError: 'xiaoming'
      
      #判断key是否存在
      print('xiaoming' in names) #False
      print(names.get('xiaoming')) #None
      print(names.get('xiaoming','该key不存在')) #该key不存在
      if(not 'xiaoming' in names):
          names['xiaoming'] = 88
      print(names)  #{'zhangjia': 24, 'zhangyi': 24, 'zhangjie': 32, 'xiaoming': 88}
      #删除key
      names.pop('xiaoming')
      print(names)  #{'zhangjia': 24, 'zhangyi': 24, 'zhangjie': 32}

      二. set

      1. set可以看做是没有value的dict,所以set的重复元素会被自动被过滤

      2. set是无序的,两个set可以做数学意义上的交集、并集等操作

      3. add(key):添加元素

      4. remove(key):删除元素

      5. set中的元素必须是不可变对象

      # 创建一个set,需要提供一个list作为输入集合
      s = set([1, 1, 2, 2, 3, 3])
      # 重复元素会被自动过滤
      print(s)  # {1, 2, 3}
      # 添加元素
      s.add(4)
      print(s)  # {1, 2, 3, 4}
      # 删除元素
      s.remove(3)
      print(s)  # {1, 2, 4}
      # 交集、并集
      h = set([4, 5, 6, 7])
      print(s & h)  #{4}
      print(s | h)  #{1, 2, 4, 5, 6, 7}

      三. 不可变对象

      1. str是不变对象,而list是可变对象

      2. 对于可变对象,调用对象自身的方法,会改变对象自身的内容

      3. 对于不变对象来说,调用对象自身的任意方法,不会改变该对象自身的内容,但是会创建新的对象并返回

      a = ['c', 'b', 'a']
      a.sort();
      print(a) #['a', 'b', 'c']
      
      a = 'abc'
      a.replace('a','A')
      print(a) #abc
      a = a.replace('a','A')
      print(a) #Abc

      参考资料

      [1] 廖雪峰-Python教程

    • 0
    • 1
    • 0
    • 1.1k
    • 请登录之后再进行评论

      登录
    • 0
      打赏了52金币
    • 赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: