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中自动被过滤。

  • 相关阅读:
    【转】在.NET使用JSON作为数据交换格式
    类似QQ管家页面jquery图片轮换实例
    jquery+ajax 文件上传功能(无ifram嵌套)
    sql另辟蹊,持续更新
    【转】JavaScript 中 function 的动态执行
    八款js框架比较
    【转】怎样写出可维护的面向对象javascript
    【转】程序员该如何定位?
    WF4.0实战系列索引
    Microsoft Help Viewer help查看器所需的内容文件缺失或者损坏 解决办法
  • 原文地址:https://www.cnblogs.com/heruonan/p/8335549.html
Copyright © 2011-2022 走看看