一、字典的概念

#示例代码
student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
print(student)
#output:
{'name':'yy','grade1':98.1,'grade':99.2}
字典的特征:
  • 字典中的元素是以键值对的形式出现的
  • 键可以重复,但是值不能重复
  • 键是不可变数据类型,值是可变数据类型

二、字典的创建

#method 1:
dict1 = {} #空字典的创建 #method 2:dict()函数无参构造
items = [('a','b'),('d','e')]
d = dict(items) #method 3:dict()函数有参构造
d = dict{name = 'xx', grades = 99}
print(d)
#output:
{'name':'xx','grade':99}

三、字典的常用操作

1、计算元素个数
# len()函数
len(dict)
2、访问元素值
#字典通过元素的键来访问值
student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
print(items['name'])
#output:yy #get(键)函数访问值:当不确定字典中是否含有键时
student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
ky = get('name')
print(ky)
#output: yy
#字典中不存在键时,不会报错,会返回None
3、修改元素值

字典可以通过键来修改值

student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
items['name'] = 'u'
4、添加元素
#method 1:通过键修改值时,如果键不存在,则会在字典中添加该键值对
student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
items['name'] = 's'
键值对{'name':'s'}被添加到字典中 #method 2:通过update()函数修改某键对应的值或者添加元素
student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
ys = {'a':'b'}
student.update(ys)
5、删除元素
#删除字典中某个元素
#method 1:del 字典名[键]
student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
del student['name'] #删除字典中的全部元素,使字典称为空字典
# clear函数()
student.clear() #删除字典,字典将不存在
# del 字典名
del student
6、复制字典
# copy()函数
student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
s = student.copy()
7、成员运算
  • 字典中可以使用成员运算符(in、not in)来判断某键是否在字典中
  • 该运算符只能判断键是否在字典中,不能判断值是否在字典中
student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
print('name' in student)
#output: True
8、设置默认键值对
  • setdefault()函数:为字典中某个键设置一个默认值
student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
name = student.setdefault('school','uu')
name = student.setdefault('school','yy')#无效操作,因为上一行已经给school键设置了默认值
9、获取字典中的所有键
  • keys()函数可以用来获取字典中所有元素的键
print(student.keys())
for key in stdudent.keys():
print(key)
10、获取字典中的所有值
  • values()函数可以获取字典中所有元素所对应的值
print(student.values())
for value in stdudent.values():
print(value)
11、获取字典中的所有键值对
  • items()函数可以获取字典中所有的键值对
print(student.items())
for item in stdudent.items():
print(item)
12、随机删除元素
  • popitem()函数(返回值为元组)可以随机返回并删除一个元素
student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
item = student.popitem()
  • pop()函数(返回值为值,不是键值对)可以根据指定的键删除元素
student = {'name':'xx','name':'yy','grade1':98.1,'grade':99.2}
item = student.pop('name')

四、集合的概念

1、概念
  • 集合使用大括号表示,元素类型可以是数字类型、字符串、元组,但不可以是列表、字典
2、分类
  • 使用大括号创建的集合属于可变集合
  • 不可变集合
3、集合的创建
#通过set()创建可变集合
set1 = set('u') #通过frozenset()创建不可变集合
fset = frozenset('v')
4、集合的用途——去重
list1 = [1, 1, 2, 2, 3, 4]
set1 = set(list1)

五、集合的常用操作

1、添加元素
# add()函数
set1 = {1, 2, 3}
set1.add(4)
set2 = {5, 6}
set1.update(set2)
2、删除元素
set1 = {1, 2, 3, 4}
# remove()函数:remove()删除不存在时会报错
set1.remove(3)
# discard()函数:discard()删除不存在元素时不会报错
set1.discard(3)
3、集合运算

4、集合的遍历
set1 = {1, 2, 3, 4}
for num in set1:
print(num)

六、字典推导与集合推导

  • 字典推导

    • 使用大括号包围
    • 需要两个表达式,一个生成key,一个生成value,两个表达式之间用冒号隔开
    • 结果返回字典
#eg1:
dict1 = {x : x * x for x in range(5)}
#eg2
dict1 = [(86,'china'),(91,'india')]
dict2 = {country : code for code, country in dict1}
print(dict2)
#output:交换城市与序号的顺序
  • 集合推导

    集合推导与列表推导类似,只需要将中括号改为大括号
set1 = {x * x for x in range(5)}

python课本学习第六章的更多相关文章

  1. Python爬虫学习==>第六章:爬虫的基本原理

    学习目的: 掌握爬虫相关的基本概念 正式步骤 Step1:什么是爬虫 请求网站并提取数据的自动化程序 Step2:爬虫的基本流程 Step3:Request和Response 1.request 2. ...

  2. 201671010140. 2016-2017-2 《Java程序设计》java学习第六章

    java学习第六章    本周对与java中的接口,lambda表达式与内部类进行了学习,以下是我在学习中的一些体会:    1.接口: <1>.接口中的所有常量必须是public sta ...

  3. 进击的Python【第十六章】:Web前端基础之jQuery

    进击的Python[第十六章]:Web前端基础之jQuery 一.什么是 jQuery ? jQuery是一个JavaScript函数库. jQuery是一个轻量级的"写的少,做的多&quo ...

  4. 【转载】Gradle学习 第六章:构建脚本基础

    转载地址:http://ask.android-studio.org/?/article/11 6.1. Projects and tasks 项目和任务Everything in Gradle si ...

  5. Java基础知识二次学习--第六章 常用类

    第六章 常用类   时间:2017年4月26日16:14:49~2017年4月26日16:56:02 章节:06章_01节~06章_06节 视频长度:20:57+1:15+8:44+1:26+11:2 ...

  6. C#高级编程 (第六版) 学习 第六章:运算符和类型强制转换

    第六章 运算符和类型强制转换 1,运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ ...

  7. python 教程 第十六章、 正则表达式

    第十六章. 正则表达式 1)    匹配多个表达式 记号  re1|re2 说明  匹配正则表达式re1或re2 举例  foo|bar  匹配  foo, bar 记号  {N} 说明  匹配前面出 ...

  8. 深度学习框架PyTorch一书的学习-第六章-实战指南

    参考:https://github.com/chenyuntc/pytorch-book/tree/v1.0/chapter6-实战指南 希望大家直接到上面的网址去查看代码,下面是本人的笔记 将上面地 ...

  9. Python基础学习(六)

    前几天一直在练手廖雪峰老师的python课程,接下来继续学习,由于面向对象编程这一课相对理论便不在此练手,直接上手面向对象高级编程. 一.使用 __slots__ 一般情况下一个class是可以绑定一 ...

  10. Python爬虫学习==>第十一章:分析Ajax请求-抓取今日头条信息

    学习目的: 解决AJAX请求的爬虫,网页解析库的学习,MongoDB的简单应用 正式步骤 Step1:流程分析 抓取单页内容:利用requests请求目标站点,得到单个页面的html代码,返回结果: ...

随机推荐

  1. [转帖]Archery

    Archery SQL 审核查询平台          文档 | FAQ | Releases 功能清单 数据库 查询 审核 执行 备份 数据字典 慢日志 会话管理 账号管理 参数管理 数据归档 My ...

  2. [转帖]tidb数据库5.4.3和6.5.3版本性能测试对比

    https://tidb.net/blog/5454621f   一.测试需求: 基于历史原因,我们的业务数据库一直使用5.4.3,最近由于研发提出需求:需要升级到6.5.3版本,基于版本不同,需要做 ...

  3. [转帖]clickhouse使用clickhouse-keeper代替zookeeper

    目录 异常现象: 1. clickhouse的异常日志 2. 追踪对应节点的zookeeper日志 使用clickhouse-keeper代替 zookeeper的步骤: 1: 准备 clickhou ...

  4. [粘贴]TiFlash

    TiFlash 是 TiDB HTAP 形态的关键组件,它是 TiKV 的列存扩展,在提供了良好的隔离性的同时,也兼顾了强一致性.列存副本通过 Raft Learner 协议异步复制,但是在读取的时候 ...

  5. [转帖]88. sys_kwr

    88. sys_kwr ¶ 88.1. 插件sys_kwr简介 ¶ 插件sys_kwr是KingbaseES 的一个扩展插件.主要功能是通过周期性自动记录性能统计相关的快照,分析出KingbaseES ...

  6. ESXi重置密码以及修改网络IP地址的方法

    Study From https://www.cnblogs.com/mk21/p/15784082.html 前期公司有部分虚拟化的服务器因为只通过vCenter进行管理. 导致密码遗失. 最近因为 ...

  7. 京东云RASP云原生安全免疫创新实践

    作者:京东云 刘一鑫 1 背景 随着网络攻击事件整体呈上升趋势,应用作为网络入口承载着大量业务和流量,因此成为了安全的重灾区.黑客往往借助自动化的工具以及安全漏洞,对Web进行漏洞扫描和探测,进而利用 ...

  8. 学到一个编码技巧:用重复写入代替if判断,减少程序分支

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 近期阅读了rust标准库的hashbrown库(也就是一个 ...

  9. protojson简介

    google.golang.org/protobuf/encoding/protojson 是 Go 语言中的一个库,用于处理 Protocol Buffers(protobuf)和 JSON 之间的 ...

  10. openAI发布v0.2.0了

    时隔20天,OpenAI从v0.0.1升级到了v0.2.0.与v0.0.1版相比,v0.2.0版主要做了以下改动: 把cmd目录下微信公众号的相关服务迁移到了这里 完善了cmd下的测试服务,针对ope ...