字典和集合

字典是python中唯一,一个映射类型

如何创建一个字典,如下>>> dict = {"渗透":"网络安全","笔记":"为了共享","我们":"追逐梦想"}

>>> dict["渗透"]

'网络安全'

怎么理解字典呢?现实生活中的字典可以通过首字母进行查询要查找的汉子,python也可以这样理解,通过”:”前的元素查找到冒号后的元素。

为什么说字典是唯一一个映射类型呢?看图。

映射类型区别与序列类型,序列类型以数组的形式储存,通过索引的方式来获取相应位置的值,一般索引值与对应位置数据无关系。

简单来说就是你可以通过a找到n,但是a和n无关系。

字典的标志性符号“{}”,用大括号来定义,字典由多个键及其对应的值所构成,每一对键值成为项,很绕口吧。不急。>>> dict = {"渗透":"网络安全","笔记":"为了共享","我们":"追逐梦想"}

>>> dict["渗透"]

'网络安全'

例子里的渗透,笔记,我们就是键,而后面的宣传标语就是值了。是不是好理解多了。

注意;字典的键必须是独一无二的,里面的值可以是多个类型,但必须是不可变的(如字符串,数,元组)

如何声明个空字典>>> a = {}

>>> a

{}

>>> type(a)

如例子中直接用一个空的大括号声明即可。

声明字典的多种方式

dict()方法如下>>> dict1 = dict((('I',23),('V',83),('I',65),('U',3),('Y',343)))

>>> dict1

{'U': 3, 'I': 65, 'V': 83, 'Y': 343}

这里天钧遇到了故障,进行排查发现我定义过dictTypeError:'dict' object is not callable 出现这种错误有两种可能:1. 代码里重新定义了dict,比如 dict= {...},这时调用的是代码里定义的dict而不是python内置类型2. 取字典内容时用了()而不是[]。比如sdict("content_id"),应该是sdict["content_id"]

我的解决方法是>>> del dict

>>>

>>> dict

>>> del dict

Traceback (most recent call last):

File "", line 1, in

NameError: name 'dict' is not defined

>>> dict1 = dict((('I',23),('V',83),('I',65),('U',3),('Y',343)))

>>> dict1

{'U': 3, 'I': 65, 'V': 83, 'Y': 343}

第二种方法>>> dict2 = dict(Y = 23,A = 21,W = 56,U=353)

>>> dict2

{'U': 353, 'W': 56, 'A': 21, 'Y': 23}

对比第一种方法,第二种是比较简洁的。这时注意键的位置上不能加上双引号。否则会报错>>> dict4 = dict('Y' = 23,'A' = 21,'W' = 56,'U'=353)

File "", line 1

SyntaxError: keyword can't be an expression

直接给字典赋予新的值>>> dict1['H'] = 12

>>> dict1

{'U': 3, 'I': 65, 'H': 12, 'V': 83, 'Y': 343}

>>>

这时咱们发现字典中的项里的 顺序跟序列是不同的,是因为字典讲究映射不讲顺序,所以很随意。

内置方法

formkeys()

用于创建返回一个新的字典,他有两个参数,第一个参数就是字典的键,第二个参数是可选的,是传入键对应的值。默认为None.>>> dict1.fromkeys((1,2,3))

{1: None, 2: None, 3: None}>>> dict2 = {('wocao'),"你大爷"}

>>> dict2

{'wocao', '你大爷'}

>>> dict2 = {('wocao',"卧槽","你大爷的"),"你大爷"}

>>> dict2

{('wocao', '卧槽', '你大爷的'), '你大爷'}

>>>

为什么和我们预想的不一样呢?如结果“wocao”你大爷,所示

解释为,他把('wocao',"卧槽","你大爷的")当成一个值了。

key() values() itsms()

key方法用于返回字典中的键如下>>> dict3 = {}

>>> dict3.fromkeys(range(31),'wocao')

{0: 'wocao', 1: 'wocao', 2: 'wocao', 3: 'wocao', 4: 'wocao', 5: 'wocao', 6: 'wocao', 7: 'wocao', 8: 'wocao', 9: 'wocao', 10: 'wocao', 11: 'wocao', 12: 'wocao', 13: 'wocao', 14: 'wocao', 15: 'wocao', 16: 'wocao', 17: 'wocao', 18: 'wocao', 19: 'wocao', 20: 'wocao', 21: 'wocao', 22: 'wocao', 23: 'wocao', 24: 'wocao', 25: 'wocao', 26: 'wocao', 27: 'wocao', 28: 'wocao', 29: 'wocao', 30: 'wocao'}

>>> dict3.keys()

dict_keys([])

咦,为什么没有返回键呢?

看>>> dict3

{}

因为fromkeys根本没有赋予值。如何解决>>> dict3 = dict3.fromkeys(range(31),'wocao')

>>> dict3

{0: 'wocao', 1: 'wocao', 2: 'wocao', 3: 'wocao', 4: 'wocao', 5: 'wocao', 6: 'wocao', 7: 'wocao', 8: 'wocao', 9: 'wocao', 10: 'wocao', 11: 'wocao', 12: 'wocao', 13: 'wocao', 14: 'wocao', 15: 'wocao', 16: 'wocao', 17: 'wocao', 18: 'wocao', 19: 'wocao', 20: 'wocao', 21: 'wocao', 22: 'wocao', 23: 'wocao', 24: 'wocao', 25: 'wocao', 26: 'wocao', 27: 'wocao', 28: 'wocao', 29: 'wocao', 30: 'wocao'}

>>>

在进行操作>>> dict3.keys()

dict_keys([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30])

>>>

完美

values

用于返回字典里的所有值>>> dict3.values()

dict_values(['wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao', 'wocao'])

>>>

items

返回字典里的所有项>>> dict3.items()

dict_items([(0, 'wocao'), (1, 'wocao'), (2, 'wocao'), (3, 'wocao'), (4, 'wocao'), (5, 'wocao'), (6, 'wocao'), (7, 'wocao'), (8, 'wocao'), (9, 'wocao'), (10, 'wocao'), (11, 'wocao'), (12, 'wocao'), (13, 'wocao'), (14, 'wocao'), (15, 'wocao'), (16, 'wocao'), (17, 'wocao'), (18, 'wocao'), (19, 'wocao'), (20, 'wocao'), (21, 'wocao'), (22, 'wocao'), (23, 'wocao'), (24, 'wocao'), (25, 'wocao'), (26, 'wocao'), (27, 'wocao'), (28, 'wocao'), (29, 'wocao'), (30, 'wocao')])

>>>

字典很大,有的参数我们不知道在不在子弹里,如果不存在就会报错>>> dict3[32]

Traceback (most recent call last):

File "", line 1, in

KeyError: 32

get()

当查询一个项>>> dict3.get(32)

>>>

在不在字典里,如果不在get会返回一个None,不会报错

也可以用in 与not in 来判断

清空一个字典

clear()

前面因为帮助理解,天钧用了一个最简单的方法就是把字典del了,其实还有更好的如下>>> dict2

{('wocao', '卧槽', '你大爷的'), '你大爷'}

>>> dict2.clear()

>>> dict2

set()

>>>

copy()

复制字典

如下>>> a = {1,23,4,5,67,87,23}

>>> a

{1, 67, 4, 5, 87, 23}

>>> type(a)

>>> b = a.copy()

>>> b

{1, 67, 4, 5, 87, 23}

>>>

pop与popitem

pop是弹出值,则popitem是弹出对应的项如下>>> dict4 = {1:"wpcap",2:"342"}

>>> dict4.pop(1)

'wpcap'

>>> dict4.popitem()

(2, '342')

update

更新字典

如下>>> name = {"米老鼠":"老鼠","天钧":"男人","小白":"狗"}

>>> name

{'米老鼠': '老鼠', '小白': '狗', '天钧': '男人'}

>>> name.update(小黑= "猫")

>>> name

{'米老鼠': '老鼠', '小黑': '猫', '小白': '狗', '天钧': '男人'}

>>>

集合

set大家看见如果认真看了有事type返回的是set,这个就是集合,看对比>>> dict1 = {}

>>> dict2 = {1,23,4,5,5}

>>> type(dict1)

>>> type(dict2)

>>>

好奇怪啊,在大括号里如果只是一群数字话没有体现到映射关系的,那么就认为他是个集合。

看个有趣的例子>>> dict1 = {1,23,4,34,5,5,5,5,5,5,6,32,1,11,32}

>>> dict1

{32, 1, 34, 4, 5, 6, 11, 23}

>>>

你能找到谁失踪了吗?

创建集合>>> set1 = {1,2,3,4,5,6,7,8}

>>> set2 = set([1,2,3,4,5,6,7,8])

>>> set1 == set2

True

>>>

这两种方法是一样的

访问集合>>> set1

{1, 2, 3, 4, 5, 6, 7, 8}

>>> for each in set1:

... print(each,end = "_")

...

>>>1_2_3_4_5_6_7_8

将集合变成图片

让集合很稳,嘿嘿嘿 frozenset>>> set1 = frozenset({1,2,3,4,5,6})

>>> set1.add(22)

Traceback (most recent call last):

File "", line 1, in

AttributeError: 'frozenset' object has no attribute 'add'

>>>

python第七章_python教程(第七章)相关推荐

  1. python控制画笔尺寸_python教程系列终章:画笔控制

    Beetle.penDown() Beetle.move(10) Beetle.penUp() Beetle.move(10) Beetle.penDown() Beetle.move(10) Bee ...

  2. python画笔宽度_python教程系列终章:画笔控制

    原标题:python教程系列终章:画笔控制 3. 画笔控制 通过前面两节的学习,大家可能会感觉到实际上的编程相当于我们手握一直笔,通过各种指令控制笔的路径. 没错,我们平时写字或画画的各种操作都能够用 ...

  3. 流浪的python博客园_python学习心得第二章

    python基础 1.关于python编码的问题. python的编码现在主要是两种版本python2.7和python3.5 python2.7默认的是ascii码进行编译,我们可以采用 # -*- ...

  4. linux教程第六章,Linux教程(第六章).ppt

    Linux教程(第六章) 1 计算机专业必修课程linux第六章 系统管理 教师: 李晓红 信息科学与工程学院计算机系 2005/8 2 主要内容 性能及内核管理 软件包管理 用户和工作组管理 设备管 ...

  5. python实验七答案_Python实验报告七

    安徽工程大学Python程序设计 班级:物流192 姓名:唐家豪 学号:3190505234 成绩: 日期:2020/05/28 指导老师:修宇 [实验目的] 熟悉通过序列索引迭代执行循环:掌握元组. ...

  6. python numpy读取数据_python机器学习(七)数据分析利器,NumPy,pandas与Matplotlib

    image.png 一.Numpy NumPy库名字来源于"Numerical Python" 的缩写. 1.1.数组的概念 a为定义的一个列表,b为定义的一个数组. import ...

  7. python第七关_python 基础第七篇

    一. 补充基础数据类型的相关知识点 str. join() 把列表变成字符串 列表不能再循环的时候删除. 因为索引会跟着改变 字典也不能直接循环删除.把要删除的内容记录在列表中. 循环列表. 删除原列 ...

  8. python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后面加可迭代对象...

    在基础数据类型中可能遇到的坑: 元组: tuple1=(1) 的数据类型是int , tuple2=('alex')的数据类型是str 等 tuple1=(1,) 和 tuple2的数据类型是 tup ...

  9. 通达信 python插件选股_期货市场教程第七版_使用python在通达信里面选股

    We are a company with an unwavering focus on the customer- first and foremost. In the ever-changing ...

最新文章

  1. Go 学习笔记(14)— 结构体定义、实例化、初始化、匿名结构体、结构体访问、结构体作为形参、结构体指针
  2. poj1286(纯Polya定理)
  3. php大牛额城战笔记,PHP语言大牛开发笔记(8)——MySQL数据库基础回顾[2]
  4. 第二章 Python数据类型详解
  5. 解决安装SQL Server 2005开发版时,出现“SQL Server 服务无法启动 ”点击重试或取消的解决方法
  6. python进行对应分析_机器学习算法---对应分析
  7. oozie中时间EL表达式
  8. 白盒测试及其存在的一些问题
  9. 一不小心就对未分配的内存进行访问和修改
  10. 多个切点 boot spring_spring基于aspectJ的切点表示
  11. 1106 Lowest Price in Supply Chain(25 分)
  12. 【腾讯犀牛鸟开源人才培养计划】开源人才培养计划活动参与指南
  13. 王道训练营3月24日
  14. n9100 分区 Linux,​史上最全的三星N9100官方固件
  15. 光大银行监控平台实践,含详细工具及架构选型思路
  16. 学习累了休息一下——————看完不笑你厉害
  17. 解决花生壳 Aira2 路由器 树莓派中的aira2状态未连接的思路
  18. 利用pgzero做一个接球的小游戏
  19. 贵州省谷歌卫星地图下载
  20. 1. Hello World!

热门文章

  1. 易飞ERP进货单源码——复制报价单
  2. eureka + kafka +zookeeper
  3. STM32F10xx中独立看门狗(IWDG)和窗口看门狗(WWDG)介绍
  4. Hyper-V导出虚拟机/导入虚拟机步骤(克隆),以及克隆之后设置静态IP无效的解决办法
  5. 压缩包密码如何加密解密
  6. Dockerflie概述
  7. 脚本记录:移动端图片扩大缩小
  8. 通过powershell查询OU中被禁用的AD账号,并删除他们的所属组
  9. 20个黄色网页设计,激发你的灵感
  10. H264/HEVC 常用缩写词及其含义