zoukankan      html  css  js  c++  java
  • dict和set

    1、dict就是MAP映射表KEY-VALUE表示法

    d={'MC':95,'BOB':92,"TR":88}
    用花括号包括,KEY和VALUE之间用:连接,元素间用逗号间隔,访问时使用d[KEY],例如d['MC']取到VALUE
    dict的优点是查找速度快,缺点是占用空间大,毕竟还有KEY值需要存储list的优点是占用空间小,缺点是查找速度慢
    d[KEY]可以覆盖赋值,后赋值覆盖前赋值
    d={'MC':95,'BOB':None,"TR":88}

    d['BOB']=100
    若dict中不存在KEY,会报错,需要用KEY in dict先判断一下是否存在,或者用dict.get(KEY)看是否返回None
    删除KEY用dict.POP(KEY)

    注意点摘抄如下:

    dict的key必须是不可变对象

    这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。

    要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key,否则list是可以改变的,如果变了,那么用变了的list作为KEY值计算位置就会出错。

    2、set就是没有VALUE的dict,只有KEY,也不能重复,切必须为不可变对象,同样不能用list做KEY,但是set的KEY序列是一个list,通过add和remove添加、删除元素,重复元素添加后无效,两个set可以用来做交集和补集操作,如s1&s2或者s1|s2

    刚才所说的KEY值必须是不可变对象,因此tuple是可以作为KEY值的,但是有个前提,tuple里面不能有list,否则因为list是可变的,导致tuple的值也变化了

    3、不可变和可变对象

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

  • 相关阅读:
    数据结构-树与二叉树-思维导图
    The last packet successfully received from the server was 2,272 milliseconds ago. The last packet sent successfully to the server was 2,258 milliseconds ago.
    idea连接mysql报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property
    redis学习笔记
    AJAX校验注册用户名是否存在
    AJAX学习笔记
    JSON学习笔记
    JQuery基础知识学习笔记
    Filter、Listener学习笔记
    三层架构学习笔记
  • 原文地址:https://www.cnblogs.com/vonkimi/p/6786775.html
Copyright © 2011-2022 走看看