Python3字典与集合
一、Python3字典
字典是另一种可变容器模型,且可存储任意类型对象
字典的每个键值(key=>value)对用冒号":"分割,每个键值对之间用逗号","分割,整个字典包括在花括号"{}"中,格式如下所示:
dict = {key1:value1,key2:value2,......,keyN:valueN}
注意:
键必须是唯一的,但值则不必
值可以取任何数据类型,但键则必须是不可变的,如: 字符串,数字或元组
1、创建一个字典
dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
print(dict)
输出结果为:
{'name': 'lrving', 'gender': 'boy', 'age': 23, 'identity': 'student', 'university': 'tsinghua'}
2、访问字典里的值
dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
print(dict['name']) #访问字典dict中键name的值
print(dict['age']) #访问字典dict中键age的值
输出结果为:
lrving
23
3、修改字典
dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
print(dict)
dict['age'] = 20 #更新键age的值
dict['university'] = 'Peking University' #更新键university的值
print(dict)
输出结果为:
{'name': 'lrving', 'gender': 'boy', 'age': 23, 'identity': 'student', 'university': 'tsinghua'}
{'name': 'lrving', 'gender': 'boy', 'age': 20, 'identity': 'student', 'university': 'Peking University'}
4、删除字典元素
能删单一的元素也能清空字典,清空只需一项操作
4.1、删除单一的键
dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
del dict['university'] #删除键university
print(dict)
输出结果为:
{'name': 'lrving', 'gender': 'boy', 'age': 23, 'identity': 'student'}
4.2、清空字典
dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
dict.clear() #清空字典
print(dict)
输出结果为:
{}
4.3、删除字典
dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
del dict
print(dict)
输出结果为:(但这会引发一个异常,因为用执行 del 操作后字典不再存在)
Traceback (most recent call last):
File "/Users/liwenfeng/PycharmProjects/Python/study.py", line 157, in <module>
print(dict['name'])
TypeError: 'type' object is not subscriptable
说明字典dict已经被删除了
5、字典键的特性
字典值可以是任何的python对象,既可以是标准的对象,也可以是用户定义的,但键不行
两个重要的点需要记住:
5.1、在一个字典中不允许同一个键出现两次,创建字典时如果同一个键被赋值两次,则只识别后面的值,示例如下:
dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','age':34,'name':'james'} #键name和age出现两次
print(dict)
输出结果为:
{'name': 'james', 'gender': 'boy', 'age': 34, 'identity': 'student'} #可以看出键name和age只识别了后面的两个值james和34
5.2、键必须是不可变的,所以可以用数字,字符串和元组充当,而列表则不可行,如下示例:
dict = {['name']:'lrving','gender':'boy',['age']:23}
print(dict['name'])
输出结果为:
Traceback (most recent call last):
File "/Users/liwenfeng/PycharmProjects/Python/study.py", line 158, in <module>
dict = {['name']:'lrving','gender':'boy',['age']:23}
TypeError: unhashable type: 'list'
由此可看出在字典中使用列表是不可行的
6、字典内置函数&方法
6.1、len(dict): 计算字典元素个数,即键的总数
dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
print(len(dict))
输出结果为:
5
6.2、str(dict): 输出字典,以可打印的字符串表示
dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
print(str(dict))
输出结果为:
{'name': 'lrving', 'gender': 'boy', 'age': 23, 'identity': 'student', 'university': 'tsinghua'}
6.3、type(variable): 返回输入的变量类型,如果变量是字典就返回字典类型
dict = {'name':'lrving','gender':'boy','age':23,'identity':'student','university':'tsinghua'}
print(type(dict))
输出结果为:
<class 'dict'>
7、Python字典包含了以下内置方法
7.1、radiansdict.clear()
删除字典内所有元素
7.2、radiansdict.copy()
返回一个字典的浅复制
7.3、radiansdict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
7.4、radiansdict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值
7.5、key in dict
如果键在字典dict里返回true,否则返回false
7.6、radiansdict.items()
以列表返回可遍历的(键,值)元组数组
7.7、radiansdict.keys()
返回一个迭代器,可以使用"list()"来转换为列表
7.8、radiansdict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
7.9、radiansdict.update(dict2)
把字典dict2的键/值对更新到dict里
7.10、radiansdict.values()
返回一个迭代器,可以使用"list()"来转换为列表
7.11、pop(key[,default])
删除字典给定键"key"所对应的值,返回值为被删除的值;key值必须给出;否则,返回default值
7.12、popitem()
随机返回并删除字典中的最后一对键和值
二、Python3集合
集合(set)是一个"无序的不重复元素序列"
如果集合中有两个或两个以上相同的元素,则在取值时只会取一个(去重)
可以使用大括号"{ }"或者"set()"函数创建集合,注意: 创建一个空集合必须用"set()"而不是"{ }",因为"{ }"是用来创建一个空字典
1、创建一个集合
a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
b = set('lrving11curry30klay11')
print(a)
print(b)
输出结果为:
{'kobe', 'heat', 'AD', 'wade', '3', 23, 'james', 'lakers'}
{'n', 'g', '1', 'a', 'u', 'k', '0', 'l', 'i', 'v', '3', 'r', 'c', 'y'}
2、集合的运算
a = set('cbdcjdsuac')
b = set('ejciaugejasye')
print(a)
print(b)
print(a - b) #a中包含但b中不包含的元素
print(b - a) #b中包含但a中不包含的元素
print(a | b) #a和b的并集
print(a & b) #a和b的交集
print(a ^ b) #不同时包含a和b的元素
输出结果为:
{'c', 'u', 'a', 's', 'j', 'b', 'd'}
{'u', 'a', 's', 'y', 'j', 'e', 'i', 'c', 'g'}
{'b', 'd'}
{'i', 'y', 'g', 'e'}
{'i', 'c', 'g', 'u', 'a', 's', 'y', 'j', 'e', 'b', 'd'}
{'u', 'a', 's', 'j', 'c'}
{'b', 'y', 'e', 'i', 'd', 'g'}
2.1、类似列表推导式,同样集合支持集合推导式(Set comprehension)
a = {x for x in 'abracadabra' if x not in 'abc'}
print(a)
输出结果为:
{'d', 'r'}
3、集合的基本操作(add;update)
3.1、给一个集合添加一个元素
方法一:
a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
a.add('NBA')
print(a)
输出结果为:
{'heat', 'kobe', 'NBA', 'lakers', 'AD', 'wade', 'james', '3', 23}
方法二:
可以添加元素,且参数可以是列表,元组,字典等,语法格式如下
a.update(x) #"x"可以有多个,用逗号隔开
示例:
a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
a.update([1,'lrving','Antetokounmpo']) #在集合中添加一个列表
a.update((2,'six','five')) #在集合中添加一个元组
a.update({'name':'Howard'}) #在集合中添加字典时,只会添加字典的键,而不会是键的值
print(a)
输出结果为:
{1, 'heat', 2, 'name', 'Antetokounmpo', 'five', 'AD', 'wade', 'kobe', 'lrving', 'six', 'lakers', 23, 'james', '3'}
3.2、移除元素(remove,discard,pop)
方法一:
语法格式:
a.remove(x) #将元素"x"从集合"a"中移除,如果元素不存在,则会发生错误
示例:
a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
a.remove("heat")
print(a)
输出结果为:
{'3', 'kobe', 'james', 23, 'lakers', 'wade', 'AD'}
方法二:
语法格式:
a.discard(x)
示例:
a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
a.discard('heat')
a.discard('Cleveland') #当覆盖的元素在集合中不存在时,也不会报错
print(a)
输出结果为:
{'3', 'james', 'lakers', 'wade', 23, 'kobe', 'AD'}
方法三:
语法格式:
a.pop() #这种方法是随机删除集合中的某一个元素
示例:
a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
a.pop()
print(a)
输出结果为: (此结果是连续执行两次的结果)
{'kobe', 'wade', 'AD', 'james', 23, 'heat', 'lakers'} #删除了'3'这个元素
{'heat', 'wade', 'kobe', 'lakers', 'james', 23, '3'} #删除了'AD'这个元素
注意: 在交互模式下,这种方法是删除集合的第一个元素----切记! 切记! 切记!
3.3、计算集合元素个数
a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
print(len(a))
输出结果为:
8
4、清空集合
语法格式:
a.clear()
a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
a.clear()
print(a)
输出结果为:
set()
5、判断元素是否在集合中存在
语法格式:
x in a #返回结果为True和Flase
a = {'lakers','james',23,'heat','wade','3','kobe','AD'}
print('cleveland' in a)
print(23 in a)
输出结果为:
False
True
6、集合内置方法完整列表
6.1、add()
为集合添加元素
6.2、clear()
移除集合中的所有元素
6.3、copy()
拷贝一个集合
6.4、difference()
返回多个集合的差集
6.5、difference_update()
移除集合中的元素,该元素在指定的集合也存在
6.6、discard()
删除集合中指定的元素
6.7、intersection()
返回集合的交集
6.8、intersection_update()
返回集合的交集
6.9、isdisjoint()
判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
6.10、issubset()
判断指定集合是否为该方法参数集合的子集
6.11、issuperset()
判断该方法的参数集合是否为指定集合的子集
6.12、pop()
随机移除元素
6.13、remove()
移除指定元素
6.14、symmetric_difference()
返回两个集合中不重复的元素集合
6.15、symmetric_difference_update()
移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中
6.16、union()
返回两个集合的并集
6.17、update()
给集合添加元素
Python3字典与集合的更多相关文章
- 【学习笔记】第五章 python3核心技术与实践--字典和集合
[第四章]思考题的答案,仅供参考: []比list()更快,因为调用了list函数有一定的时间,而[]却没有. 前面我们学习了 Python 中的列表和元组,了解了他们的基本操作和性能比较.这节章,我 ...
- 菜鸟学IT之python3关于列表,元组,字典,集合浅认识!
作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753 一.列表,元组,字典,集合分别如何增删改查及遍历. 列表 # 列表的 ...
- Day2 - Python基础2 列表、字典、集合
Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...
- Python【第二课】 字符串,列表,字典,集合,文件操作
本篇内容 字符串操作 列表,元组操作 字典操作 集合操作 文件操作 其他 1.字符串操作 1.1 字符串定义 特性:不可修改 字符串是 Python 中最常用的数据类型.我们可以使用引号('或&quo ...
- python数据结构-如何在列表、字典、集合中根据条件筛选数据
如何在列表.字典.集合中根据条件筛选数据 问题举例: 过滤列表[1, 2, 5, -1, 9, 10]中的负数 筛选字典{“zhangsan”:97, "lisi":80, &qu ...
- 数据结构中的列表、元组、字典、集合 ,深浅copy
数据结构:数据结构是计算机存储数据和组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.在python中主要的数据类型统称为容器. 而序列(如列表.元组).映射(如字典).集合 ...
- Python之路【第二篇】: 列表、元组、字符串、字典、集合
本文内容: -------------------------------------- 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表(list) 序列是Pyt ...
- py基础2--列表,元祖,字典,集合,文件
本节内容 列表.元祖操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 三元运算&生成式&成员运算&解压法&队列堆栈&数据类型转换 1. 列表操作 ...
- python3入门之集合set
之前介绍python的数据结构时,没有介绍set(集合)现在在这里稍微介绍下: set原理 Python 还 包 含 了 一 个 数 据 类 型-- set ( 集 合 ) . 集 合 是 一 个 无 ...
随机推荐
- django cookie,session,auth
一.最完美的auth auth_user 是用来存储的用户注册的username,password auth 首先需要引入模块 from django.contrib import auth 用户认证 ...
- python基础语法19 面向对象总结,pickle保存对象注意事项
面向对象的三大特性: 继承,封装,多态 多态的三种表现形式:鸭子类型,继承父类,继承抽象类 pickle保存对象注意事项 class Foo: y = 20 def __new__(cls, *arg ...
- String s = new String("xyz");创建了几个String Object?并作说明。
String s = new String("xyz");创建了几个String Object?并作说明. 共产生了两个2个对象,第一个是字符串常量xyz,存储于常量池中.第二个对 ...
- echarts x轴标签文字过多导致显示不全
原文电梯:https://blog.csdn.net/kebi007/article/details/68488694 echarts x轴标签文字过多导致显示不全 如图: 解决办法1:xAxis.a ...
- 修改MyEclipse/Eclipse左侧文字大小(MacOS/Windows)
一.Windows 首先找到 Eclipse/MyEclipse 的安装目录,然后找到如下目录: \plugins\org.eclipse.ui.themes_1.1.200.v20160815-05 ...
- Hyperparameters
参数是机器学习算法的关键.它们通常由过去的训练数据中总结得出.在经典的机器学习文献中,我们可以将模型看作假设,将参数视为对特定数据集的量身打造的假设. 模型是否具有固定或可变数量的参数决定了它是否可以 ...
- Mongo 服务器的安装
MongoDB的安装 CentOS 中使用yum安装: touch /etc/yum.repos.d/mongodb-org-4.2.repo vim /etc/yum.repos.d/mongodb ...
- Shell编程——多命令顺序执行、管道、grep命令
1.多命令执行符: (1)命令1:命令2 多个命令顺序执行,没有逻辑联系,即使命令1出错,命令2依旧执行. (2)命令1&&命令2:只有命令1正确执行,命令2才能正确执行:命令1 ...
- LOJ6625 时间复杂度(min_25筛)
本人在LOJ的第三题(前两题太水不好意思说了QwQ),欢迎大家踩std. 题目链接:LOJ 题目大意:定义函数 $f$:($minp$ 表示最小质因子) $$f(x)=\begin{cases}0&a ...
- 接口自动化框架2-升级版(Pytest+request+Allure)
前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 第一版入口:接口自动化框架(Pytest+request+Allure) 本次版本做了一些升级 ...