注:本学习笔记参考了廖雪峰老师的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)]

Python快速入门学习笔记(二)的更多相关文章

  1. Python快速入门学习笔记(三)——函数的定义与调用

    定义函数 Python中定义函数的格式为: def fun([参数列表]): ... 函数在执行到return语句时结束,并将结果返回.如果没有return语句,函数执行完毕后返回None. 例: d ...

  2. Python快速入门学习笔记(一)

    本篇文章适合有其他高级语言基础的人群阅读 使用的Python版本为python2.7 使用的编辑器为Sublime Text3 世界始于Hello World: print 'Hello world' ...

  3. 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)

    [原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...

  4. Sass简单、快速上手_Sass快速入门学习笔记总结

    Sass是世界上最成熟.稳定和强大的专业级css扩展语言 ,除了Sass是css的一种预处理器语言,类似的语言还有Less,Stylus等. 这篇文章关于Sass快速入门学习笔记. 资源网站大全 ht ...

  5. python数据分析入门学习笔记

    学习利用python进行数据分析的笔记&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据分 ...

  6. python数据分析入门学习笔记儿

    学习利用python进行数据分析的笔记儿&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据 ...

  7. ASP.NET Core快速入门--学习笔记系列文章索引目录

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 抓住国庆假期的尾巴完成了此系列课程的学习笔记输出! ASP.NET Core快 ...

  8. Qt快速入门学习笔记(基础篇)

    本文基于Qter开源社区论坛版主yafeilinux编写的<Qt快速入门系列教程目录>,网址:http://bbs.qter.org/forum.php?mod=viewthread&am ...

  9. Sass快速入门学习笔记

    1. 使用变量; sass让人们受益的一个重要特性就是它为css引入了变量.你可以把反复使用的css属性值 定义成变量,然后通过变量名来引用它们,而无需重复书写这一属性值.或者,对于仅使用过一 次的属 ...

随机推荐

  1. [置顶] MapReduce 编程之 倒排索引

    本文调试环境: ubuntu 10.04 , hadoop-1.0.2 hadoop装的是伪分布模式,就是只有一个节点,集namenode, datanode, jobtracker, tasktra ...

  2. CocoaPods容易出现的问题;

    一.初次安装cocoapods打开项目遇:Pods-resources.sh: Permission denied报错. 此类报错是指编译器在打开Pods-resources.sh文件的时候遭遇权限问 ...

  3. SVN 中trunk、branches、tags都什么意思?

    1.trunk是主分支,是日常开发进行的地方. 2.branches是分支.一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中.又比如为不同用户客制化的版 ...

  4. windows环境下搭建ffmpeg开发环境

           ffmpeg是一个开源.跨平台的程序库,能够使用在windows.linux等平台下,本文将简单解说windows环境下ffmpeg开发环境搭建过程,本人使用的操作系统为windows ...

  5. 在artTemplate的标签中使用外部函数的方法

    第一步,声明函数,并将函数作为data对象的属性.例如: var resArray = new Array(); function beforeRender(data) { //addToArray为 ...

  6. Andropid自己定义组件-坐标具体解释

    在做一个view背景特效的时候被坐标的各个获取方法搞晕了,几篇抄来抄去的博客也没弄非常清楚. 如今把整个总结一下. 事实上仅仅要把以下这张图看明确就没问题了. watermark/2/text/aHR ...

  7. MySQL 资源大全中文版

    https://github.com/jobbole/awesome-mysql-cn

  8. Android四大组件之服务-Service 原理和应用开发详解

    一.Android 服务简介 Service是android 系统中的四大组件之一(Activity.Service.BroadcastReceiver.ContentProvider),它跟Acti ...

  9. SQL Server 中添加用户

    在对象资源管理器中点击安全性,选择登录名-新建登录名

  10. 控制器跳转:tabbarcontroller怎么写代码切换视图?

    项目中有时候需要在界面中进行跳转  常用的有push  present等方法  但想要在tabbarcontroller的某个子控制器跳转到另一个子控制器  怎么做? 只需要一行代码: 1是你需要跳转 ...