• 中文
    • 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.5k
  • 请登录之后再进行评论

    登录
  • 0
    打赏了52金币
  • 单栏布局 侧栏位置: