作者:tongqingliu

转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html

python基础之字典dict和集合set

字典dict

字典使用键值对存储,具有极快的查找速度。

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} # 创建字典
>>> d
{'Michael': 95, 'Tracy': 85, 'Bob': 75}
>>> d['Michael'] # 字典的索引
95
>>> d['Jack'] = 90 # 为字典添加元素
>>> d['Jack']
90
>>> d['Jack'] = 88 # 更新字典中键的值
>>> d['Jack']
88
>>> d
{'Michael': 95, 'Jack': 88, 'Tracy': 85, 'Bob': 75}
>>> 'Thomas' in d # 判断字典中是否存在某个键,若存在则返回True,若不存在则返回False
False
>>> d.get('Bob') # get方法,如果key不存在,返回None,如果存在则返回对应的值
75
>>> d.get('Haha') # 不存在,返回None
>>> d.pop('Bob') # 删除Bob对应的键值对
75
>>> d
{'Michael': 95, 'Jack': 88, 'Tracy': 85}

dict内部存放的顺序和key放入的顺序没有关系。

字典的键必须是不可变对象。

字典和列表的对比

dict有以下几个特点:

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

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

    而list相反:

  • 查找和插入的时间随着元素的增加而增加;

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

    所以,dict是用空间来换取时间的一种方法。

集合set

set和dict类似,也是一组key的集合,但不存储value。这里的集合与数学上的集合类似,其中的key不能重复。

>>> s = set([1, 2, 3]) # 通过列表创建集合
>>> s
{1, 2, 3}
>>> s = set([1, 1, 2, 2, 3, 3]) # 集合去除重复元素
>>> s
{1, 2, 3}
>>> s.add(4) # 给集合添加元素
>>> s
{1, 2, 3, 4}
>>> s.add(4) # 重复添加元素不会报错,但不会起作用
>>> s
{1, 2, 3, 4}
>>> s.remove(4) # 删除元素
>>> s
{1, 2, 3}
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2 # 求交集
{2, 3}
>>> s1 | s2 # 求并集
{1, 2, 3, 4}

参考:

http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143167793538255adf33371774853a0ef943280573f4d000

python基础之字典dict和集合set的更多相关文章

  1. python基础类型(字典:dict)

    字典的介绍: 字典(dict)Python中唯一的一个映射类型.他是以{}括起来的键值对组成,在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址,然后将key-value保存到这 ...

  2. python基础day6_字典dict

    数据类型划分:可变数据类型.不可变数据类型 不可变数据类型(又叫可哈希):元祖,bool ,int,str, 可变数据类型(又叫不可哈希):list,dict,set(集合) dict的key必须是不 ...

  3. python基础之字典dict

    不可变数据类型:tuple.bool.int.str --可哈希类型可变数据类型:list.dict.set --不可哈希类型dict-key 必须是不可变数据类型,可哈希dict-value 任意数 ...

  4. python中几个常见的黑盒子之“字典dict” 与 “集合set”

    这里说到"字典dict" 和 "集合set"类型,首先,先了解一下,对于python来说,标准散列机制是有hash函数提供的,对于调用一个__hash__方法: ...

  5. Python基础数据类型-字典(dict)

    Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...

  6. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  7. python入门14 字典dict

    字典dict是无序的key:value格式的数据序列 #coding:utf-8 #/usr/bin/python """ 2018-11-11 dinghanhua 字 ...

  8. python基础之字典、集合

    一.字典(dictionary) 作用:存多个值,key-value存取,取值速度快 定义:key必须是不可变类型,value可以是任意类型 字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分 ...

  9. Python 全栈开发二 python基础 字符串 字典 集合

    一.字符串 1,在python中,字符串是最为常见的数据类型,一般情况下用引号来创建字符串. >>ch = "wallace" >>ch1 = 'walla ...

随机推荐

  1. __read_mostly变量含义

     1. 定义 __read_mostly原语将定义的变量为存放在.data.read_mostly段中,原型在include/asm/cache.h 中定义: #define __read_mos ...

  2. CSS3弹性伸缩布局(下)——flex布局

    新版本 新版本的flex布局模型是2012年9月提出的工作草案,这个草案是由W3C推出的最新语法,这个版本立志于指定标准,让新式的浏览器全面兼容,在未来的浏览器更新换代中实现统一. 目前几乎大部分的浏 ...

  3. 【openstack N版】——摘除一个计算节点

    1.查看计算节点 #查看所有计算节点 [root@open-control01 ~]# nova service-list+----+------------------+-------------- ...

  4. 在Ueditor / Umeditor中实现上传图片跨域

    近几天公司的后台管理需要图文编辑文章,但是ueditor提供的方法中,本地图片的上传是通过flash的方式处理的,且不支持跨域.若要在已经前后端分离的Angular项目中使用,需要做复杂的环境配置.跟 ...

  5. 《分布式Java应用之基础与实践》读书笔记四

    Java代码作为一门跨操作系统的语言,最终是运行在JVM中的,所以对于JVM的理解就变得非常重要了.整体上,我们可以从三个方面来深入理解JVM. Java代码的执行 内存管理 线程资源同步和交互机制 ...

  6. 利用Sinopia搭建私有npm包

    1.安装sinopia包 npm install -g sinopia 如果是Windows系统用上面的方式安装sinopia很有可能报错,推荐使用下面方式安装: npm install sinopi ...

  7. protobuf那些事

    大家好,俺又来写博客了.......上次剧情预告说,这次会写hive的博客.......好吧,那俺就不打算写hive了.......老码农路子就是要野(本人不老,不能说得影响了找女票)......这次 ...

  8. 深入理解Struts2----类型转换

         之前的一系列文章主要介绍了有关Struts2的一些基本用法和部分的简单原理,但是始终没有介绍有关拦截器的相关内容,从本篇开始我们将从另一个角度去深入理解框架的使用,核心还是拦截器,但本篇首先 ...

  9. cookie值的设置,获取及删除

    <script> function setCookie( key, val, expire){ var dateTime = new Date(); dateTime.setTime( d ...

  10. UICollection无法下拉刷新的问题

    当UICollectonView加载的内容不够多的时候会出现无法上下拉刷新的问题,折腾了半天,原来是有一个属性没有打开 设置 : self.collectionView.alwaysBounceVer ...