一、字典的概念

#示例代码
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. 【面试题精讲】MySQL中覆盖索引是什么

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 系列文章地址 在MySQL中,覆盖索引是一种特殊类型的索引,它 ...

  2. [转帖]字符集 AL32UTF8 和 UTF8

    https://blog.51cto.com/comtv/383254# 文章标签职场休闲字符集 AL32UTF8 和 UTF8文章分类数据库阅读数1992 The difference betwee ...

  3. [转帖]SQL Server数据库重建索引、更新统计信息

    https://vip.kingdee.com/article/183932?productLineId=8 SQL Server数据库有时由于长期未做索引重建,导致SQL执行效率下降,当表的索引碎片 ...

  4. [转帖]Innodb存储引擎-idb文件格式解析

    文章目录 ibd 文件格式解析 idb文件 page类型和格式(File Header & Trailer) FIL_PAGE_TYPE_FSP_HDR 格式 Extent Descripto ...

  5. [转帖]优化命令之iotop命令

    文章目录 引言 一.iotop简介 1.iotop安装 2.iotop语法 3.iotop参数 二.I/O的常用快捷键 三.交互模式 四.iotop示例 1.只显示正在产生I/O的进程 2.显示指定P ...

  6. Oracle 以及 达梦数据库简单查询所有表行数的存储过程

    1. 今天有一个场景需要查询一个数据库实例下面所有的表的行数. 本来想查询 user_tables 视图 但是发现 这个视图里面 达梦数据库 里面存的是null的.. 百度之后发现一个解决方案是 使用 ...

  7. Chrome 历史版本下载点

    https://www.chromedownloads.net/chrome64win-stable/

  8. 【验证码逆向专栏】某验深知 V2 业务风控逆向分析

    声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容.敏感网址.数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许 ...

  9. 开源OpenIM:高性能、可伸缩、易扩展的即时通讯架构

    网上有很多关于IM的教程和技术博文,有亿级用户的IM架构,有各种浅谈原创自研IM架构,也有微信技术团队分享的技术文章,有些开发者想根据这些资料自研IM.理想很丰满,现实很骨感,最后做出来的产品很难达到 ...

  10. Mixed spaces and tabs

    ykit打包过程中报错信息如下: 报错原因: Mixed spaces and tabs(混合空格和制表符). 大多数代码约定要求使用空格或 tab 进行缩进,因此,一行代码若同时混有 tab缩进和空 ...