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()

给集合添加元素

原文地址:https://www.cnblogs.com/lrvingli/p/11800325.html

时间: 2024-11-05 18:58:39

Python3字典与集合的相关文章

python路4&mdash;字典、集合

#!/usr/bin/python3 #字典---增删改查 #穿件一个字典info >>> info = { ... 'student01':'TenLan Wu', ... 'student02':'LongZe Luola', ... 'student03':'XiaoZe Maliya' ... ... } #字典查询 >>> info {'student03': 'XiaoZe Maliya', 'student01': 'TenLan Wu', 'studen

python基础10 字符串操作,字典操作,集合操作

本节内容: 字符串操作 字典操作 集合操作 字符串操作 概述 字符串是以''或""括起来的任意文本,比如'abc',"xyz"等等.请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符. 如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" "括起来表示: "I'm OK" 类似的,如果字符串包含",我们就可以用'

Fluent_Python_Section2数据类型,03-dict-set,字典和集合

字典和集合 dict和set都基于hash table实现 1. 大纲: 常见的字典方法 如何处理查找不到的键 标准库中dict类型的变种 set和fronzenset类型 Hash table的工作原理 Hash table带来的潜在影响 字典dict 2. 泛映射类型 在collections.abc中,有Mapping和MutableMapping,两个抽象基类,主要作用是作为形式化文档,定义了映射类型的基本API. my_dict = {} #判定数据是不是广义上的映射类型 #不用typ

【Python基础知识】基本数据类型:数字、字符串、列表、元组、字典、集合

1.查看Python版本 python -V 2.Windows系统下使用命令行设置环境变量:path=%path%;D:\Python 3.几个重要的Python环境变量 PYTHONPATH PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面查找. PYTHONSTARTUP Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此变量指定的文件中的代码. PYTHONCASEOK 加入PYTHONCASEOK的环境变量,就会

Python 核心技术与实战 --02 字典和集合

什么是字典?字典是一系列由键(key) 和 值(value) 配对组成的元素集合,在python3.7+ , 字典被确定为有序(注意在3.6 中,字典有序是一个implementation detail, 在3.7 才正式成为语言特性),而在3.6 无法100% 保证有序性,而在3.6 之前是无序的,其长度大小可变,元素可以任意地删减和改变. 相比于列表和元组,字典的性能更优,特别是相对于查找/添加/删除的操作,字典都能在常数时间复杂度内完成. 而集合和字典基本相同,唯一的区别,就是集合没有键和

python基础巩固(变量类型:字典、集合、元组、列表、数字、字符串)

Python 3 教程 菜鸟教程 https://www.runoob.com/python3/python3-tutorial.html 在控制台DOS运行.py文件 先切换到.py文件所在目录 再输入python hello.py (输入python3 hello.py执行会报错,这里与菜鸟教程不同) 在Unix & Linux 平台安装 Python3 先下载Unix/Linux的源码压缩包 https://www.python.org/downloads/source/ 解压压缩包,并安

字典、集合的用法

// NSDictionary NSDictionary *dictionary = [[ NSDictionaryalloc]initWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2",  @"v3", @"k3", @"vc9", @"ko0",@"M",@&q

python基础知识——基本的数据类型2——列表,元组,字典,集合

磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 一.列表 1.列表的全部方法 如:['1','2'].['wupeiqi', 'alex'] 1 >>> dir(list) 2 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '_

python 学习笔记day05-python字典和集合、条件和循环、文件和输入输出

字典和集合 字典基础操作 创建字典 通过{}操作符创建字典 通过dict()工厂函数创建字典 通过fromkeys()创建具有相同值的默认字典 >>> aDict = {'Name':'Bob','age':23}                >>> import tab                >>> bDict = dict((['name','bob'],['age',23]))                >>> p