注:本学习笔记参考了廖雪峰老师的Python学习教程,教程地址为:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000

使用dict和set

dict

dict(字典)是Python的内置类型,在其他高级语言中称为map,使用键-值(key-value)存储,具有极快的查找速度。

dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。

第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字,无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。这就是dict的查找原理。

如,要查询某个学生的成绩,可用dict定义成绩单如下:

d = ['Larry':95,'Tony',88,'Jack',75]

再根据名字查询成绩:

d['Larry']

输出结果为:

95

由于每一个key只对应一个value(即每一个学生只对应一个成绩),因此,多次对一个key插入value,会冲掉原来的值。如:

d['Tony']  #输出88
d['Tony'] = 78 #输出78

查询某个key是否存在于字典的方法:
1.用‘in’来判断。如:

'Mary' in d #返回false
'Larry' in a #返回true

2.通过dict提供的get()方法,若不存在,返回一个错误信息,如:

d.get('Mary',-1)        #返回-1

删除某个key,可以使用pop()函数:

d.pop('Tony')

set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。要创建一个set,需要提供一个list作为输入集合:

s = [('Larry','Tony','Jack')]

再输入s,返回值为:

set = [(‘Larry’,’Tony’,’Jack’)]

通过add(key)增加元素,如:

s.add('Mary')

通过remove(key)删除元素,如:

s.remove('Mary')

set也可看做集合,因此可以做交、并、差等操作。如:

s1 = [(1,2,3)]
s2 = [(2,3,4)]
s3 = [(5,6,7)]
s1 & s2 #返回set[(2,3)]
s1 | s2 #返回set[(1,2,3,4)]

最新文章

  1. 解析大型.NET ERP系统 高质量.NET代码设计模式
  2. iOS开发UI篇—无限轮播(新闻数据展示)
  3. 思甜雅--关于qq的NABCD模型分析
  4. (转) How to install eclipse in ubuntu 12.04
  5. 启动tomcat后struts框架报异常严重: Exception starting filter struts2 Unable to load configuration. - Class: java.net.PlainSocketImpl
  6. Linux下一个C(编程入门.h档,.c档,而路多文件的调用)
  7. js页码生成库,一个适合前后端分离的页码生成器
  8. js禁止浏览器后退,防止重复支付
  9. 【2017-03-09】SQL Server 数据库基础、四种约束
  10. 浅谈!SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别
  11. 【原创】大叔问题定位分享(32)mysql故障恢复
  12. Spring4学习笔记一:环境搭建与插件安装、基本概念理解
  13. C# 解析excel时,字段内有内容,却读取不到的解决方法
  14. 机器学习入门-DBSCAN聚类算法
  15. collections系列之OrderedDict【有序字典】与DefaultDict【默认字典】
  16. Nginx安装SSL安全证书
  17. Git 个人笔记
  18. 深度学习研究组Deep Learning Research Groups
  19. 2.4 自己编写一个vivi驱动程序
  20. SQL简明教程系列15 创建索引

热门文章

  1. iOS 应用数据存储的常用方式
  2. android 五子棋开发
  3. ios怎样实现快速将显卡中数据读出压缩成视频在cocos2dx扩展开发中
  4. Xcode中c++&Object-C混编,详细介绍如何在cocos2dx中访问object函数以及Apple Api
  5. 有关AES加密的问题
  6. 将某个组中的账户移动到新的OU下
  7. 关于unity3d播放flash动画,使用插件uniswf
  8. 实现android activity之间的跳转
  9. stap-prep 需要安装那些内核符号
  10. 在CentOS上编译安装PostgreSQL