python语言第五天笔记

1399-温同学

发表文章数:74

热门标签

,
首页 » Python » 正文

字典与集合

1 字典

  字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:“键对象”和“值对象”。“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组。但是:列表、字典、集合这些可变对象,不能作为“键”,并且“键”不可重复,值是否重复无所谓。

(1) 字典的创建

a.通过{}创建。

>>> a = {'name':Jim, 'age':26}
>>> a
{'name': 'Jim', 'age': 26}
>>> b = {}						# 创建空字典
>>> b
{}

b.通过dict()创建

  先将键值对封装成元组,再将这些元组放到同一个列表中,最后在外面套一层 dict 方法。

>>> b = dict([((1,2), 'science'), ((3,4), 'technologe')])
>>> b
{(1, 2): 'science', (3, 4): 'technologe'}
>>> 

  也可将键和值分别放在不同的列表中,然后生成一个zip对象,最后在外面套一层 dict 方法。
  zip(列表 1,列表 2,…),将多个列表对应位置的元素组合成为元组,并返回这个 zip 对象。

>>> m = ['name', 'age']			# 将键放在 m 列表
>>> n = ['jim', 26]				# 将值放在 n 列表
>>> c = dict(zip(m, n))		# 先用 zip 方法生成一个 zip 对象,然后用 dict 生成一个字典
>>> c
{'name': 'jim', 'age': 26}

  也可以用 dict 方法生成一个空字典

>>> d = dict()
>>> d
{}

*c.通过 fromkeys 创建值为空的字典

>>> a = dict.fromkeys(['name','age'])
>>> a
{'name': None, 'age': None}

(2) 字典元素的访问

  先定义一个字典对象:a = {‘name’:‘gaoqi’,‘age’:18,‘job’:‘programmer’}

a.使用 [键] 来获得值

  若键存在,则返回值,否则抛出异常。

>>> a = {'name':'gaoqi','age':18,'job':'programmer'}
>>> a['name']
'gaoqi'
>>> a['age']
18
>>> a['sex']
Traceback (most recent call last):
File "<pyshell#374>", line 1, in <module>
a['sex']
KeyError: 'sex'

b.通过 get()方法获得“值”。

  使用get方法,指定键存在则返回对应的值,不存在则返回 None,不会抛出异常;同时也可以设定指定键不存在时默认返回的对象。因此推荐使用 get()获取“值对象”。

>>> a.get('name')
'gaoqi'
>>> a.get('sex')
>>> a.get('sex','不存在')		# 当字典中没有'sex'这个键时,返回'不存在'
'不存在'

(3) 字典元素添加、修改、删除

a.添加

  字典名[键]=值,如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,则新增“键值对”。

>>>a = {'name':'gaoqi','age':18,'job':'programmer'}
>>> a['address']='西三旗 1 号院'		
>>> a['age']=16				# “键”已经存在,则覆盖旧的键值对
>>> a
{'name': 'gaoqi', 'age': 16, 'job': 'programmer', 'address': '西三旗 1 号院'}

b.更新

  使用 update()将新字典中所有键值对全部添加到旧字典对象上。如果 key 有重复,则直接覆盖。

>>> a = {'name':'gaoqi','age':18,'job':'programmer'}
>>> b = {'name':'gaoxixi','money':1000,'sex':'男的'}
>>> a.update(b)
>>> a
{'name': 'gaoxixi', 'age': 18, 'job': 'programmer', 'money': 1000, 'sex': '男的'}

c.删除

  使用内建函数del()方法删除指定键值对;或者用clear()删除所有键值对;pop()删除指定键值对,并返回对应的“值对象”;

>>> a = {'name':'gaoqi','age':18,'job':'programmer'}
>>> del a['name']
>>> a
{'age': 18, 'job': 'programmer'}
>>> b = a.pop('age')
>>> b
18
>>>b.clear()
>>>b
>>>{}

d. popitem()随机删除并返回键值对

  字典是“无序可变序列”,因此没有第一个元素、最后一个元素的概念,所以弹出时,也是随机的。

>>> a = {'name':'gaoqi','age':18,'job':'programmer'}
>>> a.popitem()
('job', 'programmer')
>>> a
{'name': 'gaoqi', 'age': 18}
>>> a.popitem()
('age', 18)
>>> a
{'name': 'gaoqi'}

2 集合

  集合是无序可变、元素不能重复的数据结构。实际上,集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复的且唯一的。
  字典可以通过键来遍历,但集合无法遍历。

(1) 集合的创建

a.使用{}创建

>>> a = {3,5,7}
>>> a
{3, 5, 7}

b.使用set()方法创建

  先将元素封装到列表中,然后将列表放进set()方法里面。

>>> m = set(['a', 'b', 'c'])
>>> m
{'c', 'a', 'b'}
>>> n = set()			# 创建空集合
>>> n
set()

  注意,空集不能使用{},因为这是空字典

>>> b = {}
>>> type(b)
<class 'dict'>

(2)集合元素增加与删除

  add()增加元素,remove()删除指定元素,clear()清空整个集合

>>> a = {3,5,7}
>>> a
{3, 5, 7}
>>> a.add(9)
>>> a
{9, 3, 5, 7}
>>> a.add(5)	# 集合中原本就有5,再加一个 5 不改变元素数量,也不会报错
>>> a
{9, 3, 5, 7}
>>> a.remove(9)	# 删除 9
>>> a
{3, 5, 7}
>>> a.clear()	# 清空集合
>>> a
set()

(3)集合运算

  数学中,集合之间可以求交、并、差,python中的集合,同样可以做这些运算

>>> a = {1,3,'sxt'}
>>> b = {'he','it','sxt'}
>>> a|b 					#并集
{1, 3, 'sxt', 'he', 'it'}
>>> a&b 					#交集
{'sxt'}
>>> a-b 					#差集
{1, 3}

3 组合数据类型总结

(1) 分类

a.按可变与不可变分

  不可变:字符串、元组;
  可变:列表、字典、集合

  删除指定元素时,列表可以通过类型自带函数 remove 和python内置函数 del,字典可以通过内置函数 del 和类型自带的 pop 删除元素,而集合只能通过类型自带的 remove 删除元素。

b.按是否有序分

  有序:字符串、列表、元组

  元素之间有序,同一个元素可以出现多次,可以通过序号遍历,可以切片,都可以用加号拼接,都可以用 index 、count查找。
  无序:字典、集合

(2) 通用方法与运算

  len()求长
  in/not in 判断元素是否在容器中

>>> a
{3, 5, 7}
>>> 3 in a
True
>>> b = {3:5, 4:6}
>>> 3 in b
True
>>> c = 'ABCDE'
>>> 'M' not in c
>>> True
>>>len(a)
>>>3

未经允许不得转载:作者:1399-温同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《python语言第五天笔记》 发布于2020-11-11

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录