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

    python内置了字典,dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

    举个例子,假设要根据同学们的名字查找对应的成绩,如果用list实现,需要两个list:

    names=['Michael','Bob','Tracy']

    scores=[95,75,85]

    给定一个名字,要查找对应的成绩,就先要在names中到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。

    如果用dict实现,只需要一个“名字”-“成绩”的对应表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用python写一个dict如下:

    d={'Michael':95,'Bob':75,‘Tracy':85}

    d['Michael']

    请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的

    和list比较,dict有以下几个特点:

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

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

    而list相反:查找和插入的时间随着元素的增加而增加;

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

    dict使用在需要高速查找的很多地方,在python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象

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

    要保证hash的正确性,作为key的对象就不能变,在python中,字符串,整数等都是不可变的,因此,可以放心的作为key,而list是可变的,就不能作为key

    set

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

    要创建一个set,需要提供一个list作为输入集合

    注意:传入的参数【1,2,3】是一个list,而显示的{1,2,3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不代表set是有序的。

    重复元素在set中自动被过滤。

  • 相关阅读:
    cs231n.stanford.edu
    cs229.stanford.edu
    Boost circular_buffer example
    OI中一些常见实用的套路【更新中】
    用Java读取xml文件内容
    在控制台中操作MYSQL数据库步骤以及一些小问题
    java 实现对指定目录的文件进行下载
    将java项目发布到本地的linux虚拟机上
    mybatis 控制台打印出来的sql 执行结果为空 但是将sql放到mysql执行有数据
    spring mvc 拦截器
  • 原文地址:https://www.cnblogs.com/heruonan/p/8335549.html
Copyright © 2011-2022 走看看