目录
5.1一个简单的字典
#一个简单的字典
alien={'color':'green','points':5}
print(alien['color'])
print(alien['points'])
green
5
5.1.1 定义
什么是字典:
1. 字典是一种可变的容器,可以存储任意类型的数据
2. 字典中的每个数据都是用"键" (key) 进行索引,而不像序列可以用下标进行索引
3. 字典中的数据没有先后关系,字典的存储是无序的
4. 字典的数据是以键(key)-值(value)对的形式进行存储的
5. 字典的表示方式是以{} 括起来,以冒号(:)分割的键值对,各键值对之间用逗号分隔开
6. 字典的键不能重复
5.2使用字典
在python中,字典是键值对,字典中的花括号{}表示一系列的键值对。
5.2字典的基本操作
5.2.1访问字典中的值
将字典中的alien与color和points相关联,c1代表color的值,c2代表points的值。最后进行输出。
alien={'color':'green','points':5}
c1=alien['color']
p1=alien['points']
print(c1)
print(p1)
print(f"the color is {c1} player just earned {p1} points!")
5.2.2添加键值对
字典是一种动态结构,可随时在其中添加键值对。要添加键值对时,可依此指定字典名、用方括号[]括起来的键和相关联的值,下面分别用x,y表示外星人的坐标。
最后输出得到了两个所添加的坐标值
在python3.7中,字典中元素的排列顺序与定义时相同。如果字典打印出来或遍历其元素,将发现元素的排列顺序与添加顺序相同。
alien={'color':'green','points':5}
print(alien)
alien['x_position']=0
alien['y_position']=25
print(alien)
{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
5.2.3修改、删除字典中的值
修改:由于在字典中,“键”必须是唯一的,如果新添加元素的“键”与已经存在的“键”重复,那么将使用新的“值”替换原来该“键”的值,这也相当于修改字典的元素。
alien={'color':'green','points':5}
print(alien)
alien['color']='yellow'
print(alien)
删除:对于字典不再需要的信息,可使用del语句将相应的键值对彻底删除,删除的键值对将永远消失。
如下删除代码,已删除points及其值5,但其他键并未受影响。
alien={'color':'green','points':5}
del alien['points']
print(alien)
5.2.4使用get()来访问值
使用放在方括号内的键从字典中获取感兴趣的值时,可能会引发问题:如果指定的键不存在就会出错。
方法get()的第一个参数用于指定键,是必不可少的;第二个参数为知道你过的键不存在时要返回的值,是可选的。第二个参数为想查询的键不存在时返回的值,是可选的;若未指定返回的值,则自动返回None
#get访问
alien={'color':'green','points':5}
value_speed=alien.get('speeds','No speed value assigned')
print(value_speed)
5.3遍历字典
5.3.1遍历字典的所有键值对
要编写遍历字典的for循环,可声明两个变量,用于存储键值对中的键和值。
如下代码(key和value也可用其他字符串代替,不是唯一的)
键:key
值:value
使用方法items(),它返回一个键值对列表。
#遍历字典
favourite_languages={'amy':'python','ben':'c','cing':'java','dok':'python'}
for key,value in favourite_languages.items():
print(f"key:{key}")
print(f"value:{value}\n")
5.3.2遍历字典中所有的键或值、集合
keys()返回键列表
valus()返回值列表
set()剔除重复元素(集合)
方法keys()并非只能遍历:实际上,它返回一个列表,其中包含字典中所有的键
favourite_languages={'amy':'python','ben':'c','cing':'java','dok':'python'}#--snip--
for name in favourite_languages.keys():
print(name.title())
print("\n")
for language in favourite_languages.values():
print(language.title())
print("\n")
#剔除重复项,此代码运行结果就删除了重复的python
for language in set(favourite_languages.values()):
print(language)
列表(list)和元组(tuple)是标准的 Python 数据类型,它们将值存储在一个序列中。集合(set)是另一种标准的 Python 数据类型,它也可用于存储值。它们之间主要的区别在于,集合不同于列表或元组,集合中的每一个元素不能出现多次,并且是无序存储的。
集合是一个拥有确定(唯一)的、不变的的元素,且元素无序的可变的数据组织形式。
你可以使用「set()」操作初始化一个空集。
5.4嵌套
嵌套:将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。 既可以在列表中嵌套字典,也可以在字典中嵌套列表,甚至在字典中嵌套字典 。
5.4.1字典列表
列表嵌套字典
#嵌套,字典列表
alien_0={'color':'green','point':'0'}
alien_1={'color':'green','point':'1'}
alien_2={'color':'green','point':'2'}
aliens=[alien_0,alien_1,alien_2]
print(aliens)
下列代码,使用range()生成20个外星人,创建颜色,显示个数
#自动生成20个外星人,列表中存储字典
#创建一个可用于储存外星人的空列表
aliens=[]
for alien_number in range(20):
alien_0={'color':'green','point':'0'}
aliens.append(alien_0)
#显示前五个外星人
for alien in aliens[:5]:
print(alien)
print("\n")
#可以修改颜色与显示外星人个数
for alien_1 in aliens[:3]:
if alien_1['color']=='green':
alien_1['color']='pink'
alien_1['point']=6
for alien_1 in aliens[:5]:
print(alien_1)
5.4.2字典中存储列表
列表和字典的嵌套层次不应太多,如果嵌套层次比前面的示例多得多,很可能有更简单的解决方案。
#字典中存储列表
favourite_languages={
'amy':'python',
'ben':'c',
'cing':['java','python'],
'dok':'python'
}
print(favourite_languages['amy'])
print(favourite_languages['cing'])
for ci in favourite_languages['cing']:
print("\t"+ci)
python
['java', 'python']
java
python
5.4.3在字典中存储字典
纯纯的靠自己看懂
#字典中存储字典
favourite_languages={
'A1':{
'amy':'python',
'ben':'c',
},
'A2':{
'cing':'java',
'dok':'python',
},
}
for ff1,ff2 in favourite_languages.items():
print(ff1)
print(ff2)
for mm1,mm2 in ff2.items():
print(f"{mm1}**{mm2}")
print("\n")
A1
{'amy': 'python', 'ben': 'c'}
amy**python
ben**c
A2
{'cing': 'java', 'dok': 'python'}
cing**java
dok**python
请指正