文章目录
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}是他们喜欢的颜色之一")
----------
蓝色是他们喜欢的颜色之一
黑色是他们喜欢的颜色之一
红色是他们喜欢的颜色之一