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

8 Python的数据类型——字典和集合

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

8 Python的数据类型——字典和集合

文章目录
  • Python的数据类型
  • 1 集合
    • 1.1 集合是什么
    • 1.1 创建一个集合
  • 2 字典是什么
  • 3 字典的操作
    • 3.1 创建一个空字典
    • 3.2 查:访问字典中的值
      • 方法1:使用方括号
      • 方法2:使用方法get()
    • 3.3 增:添加键值对
    • 3.4 改:修改字典中的值
    • 3.5 删:删除键值对
    • 3.6 遍历字典
      • (1)遍历所有键值对
      • (2)遍历所有键
      • (3)遍历所有值


Python的数据类型
  • 字符串
  • 列表
  • 元组
  • 字典
  • 集合

1 集合 1.1 集合是什么

集合用一对花括号定义,集合中的每个元素必须是独一无二的


1.1 创建一个集合
houses={'Gryffindor','Slytherin','Hufflepuff','Ravenclaw'}
print(houses)
----------
{'Hufflepuff', 'Slytherin', 'Ravenclaw', 'Gryffindor'}

2 字典是什么

一个字典名为「houses_0」的字典,储存了霍格沃兹格兰芬多学院的详细信息的字典

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red'}
print(houses_0['color'])
print(houses_0['name'])
----------
red
Gryffindor
  • 在Python中,字典是由放在花括号内「{ }」的键值对组成的
  • 每个键都与一个值相关联,可以使用键来访问值
  • 键和值用冒号分隔;键与键用逗号分隔
  • 在Python中,值可以是任何对象


    在本例中有三个键值对:
    键「name」——————值「Gryffindor」
    键「representation」——值「lion」
    键「color」 ——————值「红色」


    字典储存的是一个对象(霍格沃兹的某个学院)的多种信息(name、representation、color)
    也可以使用字典存储很多对象(霍格沃兹的四个学院)的同一个信息(代表色)
colors={'Gryffindor':'red',
		'Slytherin':'green',
		'Hufflepuff':'yellow',
		'Ravenclaw':'blue'}
print(f"莱文克劳学院的代表色为{colors['Ravenclaw']}")
----------
莱文克劳学院的代表色为blue

▶ 注:区分字典与集合,他们都是由一对花括号定义的
▶ 花括号内没有键值对,那就是集合
▶ 集合不同于列表和字典,它不会以特定的顺序存储元素


3 字典的操作 3.1 创建一个空字典
houses_0={}

3.2 查:访问字典中的值 方法1:使用方括号

要获取与键相关联的值,则需依次指定字典名和键,键放在方括号内

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red'}
print(houses_0['color'])     ###
----------
red

▶ 注:使用该方法,当字典中没有指定的键的信息时,会报错


方法2:使用方法get()

使用方法get(),括号内第一个参数为要查找的键,第二个参数为查找的键不存在时返回的值

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red'}

name=houses_0.get('name')     #####
print(name)

mood=houses_0.get('斯内普教授的心情','今天斯内普教授的心情未知')     #####
print(mood)
----------
Gryffindor
今天斯内普教授的心情未知

3.3 增:添加键值对

要添加键值对,需依次指定字典名和键,键放在方括号内,键与值的关联用等号表示

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red'}
print(houses_0)

houses_0['founder']='Godric Gryffindor'
houses_0['points']=490

print(houses_0)
----------
{'name': 'Gryffindor', 'representation': 'lion', 'color': 'red'}
{'name': 'Gryffindor', 'representation': 'lion', 'color': 'red', 'founder': 'Godric Gryffindor', 'points': 490}

▶ 注:Python3.7中,字典内键值对的排列顺序与添加顺序一致。对字典进行遍历是也是这个顺序。


3.4 改:修改字典中的值

要修改字典中的值,需依次指定字典名和键,键放在方括号内,用等号连接新值

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red',
		  'points':490}
print(houses_0)

houses_0['points']=440     ###
print(houses_0)
----------
{'name': 'Gryffindor', 'representation': 'lion', 'color': 'red', 'points': 490}
{'name': 'Gryffindor', 'representation': 'lion', 'color': 'red', 'points': 440}

扩展例子
当斯内普教授心情为很好、一般、很差时,格兰芬多分别会扣10分、30分、50分
定义一个字典,字典内包括斯内普教授心情的键值对,存储当前格兰芬多的分数,并更新此后格兰芬多的分数

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red',
		  'points':490,
		  '斯内普教授的心情':'一般'}
print(houses_0)

if houses_0['斯内普教授的心情']=='很好':
	depoints=10
elif houses_0['斯内普教授的心情']=='一般':
	depoints=30
else:
	depoints=50

houses_0['depoints']=depoints
houses_0['points']=houses_0['points']-depoints
print(houses_0)
----------
{'name': 'Gryffindor', 'representation': 'lion', 'color': 'red', 'points': 490, '斯内普教授的心情': '一般'}
{'name': 'Gryffindor', 'representation': 'lion', 'color': 'red', 'points': 460, '斯内普教授的心情': '一般', 'depoints': 30}

3.5 删:删除键值对

要删除键值对,需使用del语句指定字典名和键

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red',
		  'points':490,
		  '斯内普教授的心情':'一般'}
print(houses_0)

del houses_0['斯内普教授的心情']     ###
print(houses_0)
----------
{'name': 'Gryffindor', 'representation': 'lion', 'color': 'red', 'points': 490, '斯内普教授的心情': '一般'}
{'name': 'Gryffindor', 'representation': 'lion', 'color': 'red', 'points': 490}

▶ 注:删除为永久删除


3.6 遍历字典 (1)遍历所有键值对

方法items()
对字典使用方法items(),返回键值对列表

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red'}

print(houses_0.items())     ###
----------
dict_items([('name', 'Gryffindor'), ('representation', 'lion'), ('color', 'red')])

for循环遍历字典

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red'}

for i,j in houses_0.items():     ###
	print(f"n键:{i}")
	print(f"值:{j}")
----------
键:name
值:Gryffindor

键:representation
值:lion

键:color
值:red
colors={'Gryffindor':'red',
		'Slytherin':'green',
		'Hufflepuff':'yellow',
		'Ravenclaw':'blue'}

for name,color in colors.items():     ###
	print(f"{name}'的代表色为{color}")
----------
Gryffindor'的代表色为red
Slytherin'的代表色为green
Hufflepuff'的代表色为yellow
Ravenclaw'的代表色为blue

for循环语句中:
先声明两个变量「i」和「j」,用于分别存储键和值
存储的键和值通过方法items()得到

我自己的理解是方法items()将字典分为了两个列表,列表1是关于键的列表,列表2是关于值的列表
声明的两个变量分别关联两个列表
于是原理就同列表遍历


(2)遍历所有键

方法keys()
对字典使用方法keys(),返回一个列表,其中包含字典的所有键

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red'}

print(houses_0.keys())     ###
----------
dict_keys(['name', 'representation', 'color'])

for循环遍历键

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red'}

for i in houses_0.keys():     ###
	print(i)
----------
name
representation
color

当遍历字典时,会默认遍历所有键

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red'}

for i in houses_0:     ###
	print(f"对学院调查的项目为{i}")
----------
对学院调查的项目为name
对学院调查的项目为representation
对学院调查的项目为color

(3)遍历所有值

方法values()
对字典使用方法values(),返回一个列表,其中包含字典的所有值

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red'}

print(houses_0.values())     ###
----------
dict_values(['Gryffindor', 'lion', 'red'])

for循环遍历值

houses_0={'name':'Gryffindor',
		  'representation':'lion',
		  'color':'red'}

for j in houses_0.values():     ###
	print(f"对学院调查的结果为{j}")
----------
对学院调查的结果为Gryffindor
对学院调查的结果为lion
对学院调查的结果为red

使用函数set()去掉字典的值中的重复值
对列表调用函数set(),可以去掉列表的重复值,返回列表中独一无二的元素

colors={'小A':'红色',
		'小B':'黑色',
		'小C':'红色',
		'小D':'蓝色',
		'小E':'红色'}
print(colors.values())
print(set(colors.values()))     ###
----------
dict_values(['红色', '黑色', '红色', '蓝色', '红色'])
{'蓝色', '红色', '黑色'}
colors={'小A':'红色',
		'小B':'黑色',
		'小C':'红色',
		'小D':'蓝色',
		'小E':'红色'}

for color in set(colors.values()):     ###
	print(f"{color}是他们喜欢的颜色之一")
----------
蓝色是他们喜欢的颜色之一
黑色是他们喜欢的颜色之一
红色是他们喜欢的颜色之一
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/886787.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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