栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Python数据分析基础-7】数据结构之字典与集合

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Python数据分析基础-7】数据结构之字典与集合

0 引入

字典(dict) 又名哈希表,是Python中最重要的数据结构,它以键对值的形式将数据储存在大括号"{}"中。而集合是一种无序且元素唯一的数据结构,可以认为集合是只有值没有键的字典。

1 字典 1.1 字典的创建

字典可以直接通过{}创建,如:

dic = {'a':1, 'b':2, 6:[3,4,5], 'd':'Blue'}

这样就创建好一个名为dic的字典了,其中冒号前如'a'、'b'、6等为键,1、2、[3,4,5]等为值。

还有另外一种创建字典的方法。因为字典本质为形如(键,值)的二元组,所以当你有两个序列,且想把它们通过字典进行储存,便可以直接创建。比如,我现在有两个序列['a', 'b', 6, 'd']和[1, 2, [3, 4, 5], 'Blue']

那么可以通过zip函数将两个字典一一配对打包,再直接转换为字典,如下:

dict(zip(['a', 'b', 6, 'd'], [1, 2, [3, 4, 5], 'Blue']))

此时得到的结果为:

{'a': 1, 'b': 2, 6: [3, 4, 5], 'd': 'Blue'}
1.2 字典的基本操作 1.2.1 获取字典的值

若想获取字典某个键对应的值,则以dict[键名]的形式,如要获取上面字典的'd'键对应的值:

dic['d']

若想检查字典中是否存在某个键,则用in,如

'a' in dic   ## 返回True,说明键'a'在字典dic中
'x' in dic   ## 返回False,说明'x'不在字典dic中

如果想获得某个键对应的值,但是不知道键是否存在字典中,常用以下逻辑:

if 键 in 字典:
    值 = 字典[键]
else:
    值 = None  # None可以更改

以上述字典为例:

if 'c' in dic:
    val = dic['c']
else:
    val = None

得到的结果为None,当然,如果键不在字典中,不一定要返回None,也可以返回其他你想要返回的。

Python的字典方法中存在方法get(key, default_value),可以简写上述逻辑:

key,指的是你想获取值对应的键名
default_value,指的是如果键名不存在,你想要返回啥

以上述字典为例:

val = dic.get('c', None)

结果同样为None

1.2.2 删除字典的值

删除字典中的值有两种方法,del和pop,其中pop会在删除值的同时将值返回。以删除上述字典中的2为例,如下:

1、del

del dic['b']
# 删除后的字典为
{'a': 1, 6: [3, 4, 5], 'd': 'Blue'}

2、pop

b = dic.pop('b')

此时变量b接受了dic弹出的值2,并且dic也变为了{'a': 1, 6: [3, 4, 5], 'd': 'Blue'}

1.2.3 获取字典值、键、键值对

keys方法可以获取字典的所有键,keys方法提供的是迭代器,所以需要通过转换为列表,如下:

list(dic.keys())

结果为['a', 'b', 6, 'd']即为字典所有的键。

同样的,values方法可以获取字典所有值,并且也为迭代器,也需要转换为列表操作:

list(dic.values())

结果为[1, 2, [3, 4, 5], 'Blue']即为字典所有的值。

2 集合

集合是一种元素唯一且无序的数据结构,可以认为只有值的字典。

2.1 集合的创建

集合具有两种创建方法:

1、直接创建

{1, 2, 3, 4, 5}

2、set()函数

将其他数据结构转换为集合:

set([1, 2, 3, 4, 5])

结果同样为{1, 2, 3, 4, 5}。

2.2 集合操作方法

假设集合名为s,则集合具有以下操作方法:

Python集合操作
函数
描述
s.add(x)
将元素x加入集合s
s.clear()
将集合s中的元素清空
s.remove(x)
从集合s中移除元素x
s.pop()
移除任意元素,如果集合是空的,则抛出keyerror
s.union(a)
获取集合s和集合a中所有不同元素,相当于两个集合取并集,得到的结果可以赋予给新变量
s.update(a)
将s的内容设置为s和a两个集合的并集,注意和s.union(a)区别,s.update(a)得到的结果只能赋予s
s.intersection(a)
取s和a同时包含的元素,即取交集
s.intersection_update(a)
将s的内容设置为s和a两个集合的交集
s.difference(a)
在s不在a中的元素
s.difference_update(a)
将s的内容设置为在s不在a中的元素
s.symmetric_difference(a)
所有在s或者a,但不是同时在s、a中的元素
s.symmetric_difference_update(a)
将s的内容设置为所有在s或者a,但不是同时在s、a中的元素
s.issubset(a)
如果s包含于a,返回True
s.issuperset(a)
如果s包含a,返回True
s.isdisjoint(a)
s、a交集的元素为空,返回True

​

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/915771.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号