元组



Python入门(7)——元组与字典_元组


元组的定义


Python入门(7)——元组与字典_元组_02


    不可修改的列表称为元组。元组定义与列表定义的区别在于列表使用 [ ] 标识,而元组使用 ( ) 标识。严格地说,元组是由逗号 标识的,圆括号只是让元组看起来更整洁。下面的例子演示了元组如何定义。

>>> tuple1 = ('a', 'b', 'c')
>>> print(tuple1)
('a', 'b', 'c')
>>> type(tuple1)
<class 'tuple'>
>>> tuple2 = 'a',
>>> print(tuple2)
('a',)
>>> type(tuple2)
<class 'tuple'>


Python入门(7)——元组与字典_元组


元组的使用


Python入门(7)——元组与字典_元组_02

    因为元组是不可修改的列表,所以元组没有增加元素、修改元素、删除元素等操作,但可以对元组进行遍历。下面的例子演示了如何遍历元组。

>>> tuple3 = 'a', 'b', 'c', 'd', 'e'
>>> for x in tuple3:
print(x)




a
b
c
d
e


字典


    字典其实就是一系列键值对,类似于C++/Java的Map结构。每个键都与一个值相关联,你可以使用键来访问相关联的值。


Python入门(7)——元组与字典_元组


字典的创建


Python入门(7)——元组与字典_元组_02


下面的例子演示了如何创建一个字典。

>>> student = {'id': 1203, 'name': 'Mary', 'age': 22}
>>> print(student)
{'id': 1203, 'name': 'Mary', 'age': 22}
>>> type(student)
<class 'dict'>


    花括号中每一个键值对以逗号隔开,键与值用冒号隔开。在字典中,你想存储多少个键值对都可以。


Python入门(7)——元组与字典_元组


取字典中指定键的值


Python入门(7)——元组与字典_元组_02

    在字典中获取指定键的值与访问列表中指定索引的值类似,只需指定字典名和键即可。下面的例子演示了如何访问字典中指定键的值。

>>> student = {'id': 1203, 'name': 'Mary', 'age': 22}
>>> print(student['name'])
Mary


    但是,上面取值的方法在你指定键不存在的情况下,就会报错。所以,我们一般用 get() 方法来取字典中指定键的值。当然,你也可以在 get() 方法添加第二个参数,即指定没有此键存在时要返回的值。

>>> student = {'id': 1203, 'name': 'Mary', 'age': 22}
>>> print(student['city'])
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
print(student['city'])
KeyError: 'city'
>>> print(student.get('city'))
None
>>> print(student.get('city','No point value assigned.'))
No point value assigned.


Python入门(7)——元组与字典_元组


在字典中添加键值对


Python入门(7)——元组与字典_元组_02

    添加键值对,只需把要添加的键放在字典名的 [ ] 里面,值用赋值运算符把对应的值赋给它即可。下面的例子演示了如何在字典中添加键值对。

>>> student = {'id': 1203, 'name': 'Mary', 'age': 22}
>>> student['city'] = 'Beijing'
>>> print(student)
{'id': 1203, 'name': 'Mary', 'age': 22, 'city': 'Beijing'}



Python入门(7)——元组与字典_元组


空字典的创建


Python入门(7)——元组与字典_元组_02

    有时,我们要用字典来存储用户提供的数据,通常会提前创建一个空字典,在需要添加数据时用添加键值对的方式进行添加。

>>> student = {}
>>> student['id'] = 12345
>>> student['name'] = 'John'
>>> print(student)
{'id': 12345, 'name': 'John'}



Python入门(7)——元组与字典_元组


修改字典中的值


Python入门(7)——元组与字典_元组_02

下面的例子演示了如何修改字典中指定键的值。

>>> student = {'id': 1203, 'name': 'Mary', 'age': 22}
>>> student['age'] = 18
>>> print(student)
{'id': 1203, 'name': 'Mary', 'age': 18}



Python入门(7)——元组与字典_元组


删除字典中的键值对


Python入门(7)——元组与字典_元组_02

    对于字典中不需要用到的键值对,我们可以用 del 语句把键值对删除。下面的例子演示了如何删除指定的键值对。

>>> student = {'id': 1203, 'name': 'Mary', 'age': 22}
>>> del student['age']
>>> print(student)
{'id': 1203, 'name': 'Mary'}



Python入门(7)——元组与字典_元组


遍历字典中所有的键值对


Python入门(7)——元组与字典_元组_02

    利用 items() 方法,在利用for循环,我们就可以遍历字典中所有的键值对。

>>> student = {'id': 1203, 'name': 'Mary', 'age': 22}
>>> for key, value in student.items():
print(f'\nkey = {key}')
print(f'value = {value}')




key = id
value = 1203


key = name
value = Mary


key = age
value = 22


Python入门(7)——元组与字典_元组


遍历字典中所有键


Python入门(7)——元组与字典_元组_02

    使用 keys() 方法,其返回所有键的列表,可以取到字典中的所有键。当然,遍历字典时默认会遍历所有键,所以我们可以直接遍历字典而不必调用 keys() 方法。

>>> student = {'id': 1203, 'name': 'Mary', 'age': 22}
>>> for key in student.keys():
print(key, end = '\t')



id name age
>>> for key in student:
print(key, end = '\t')




id name age


Python入门(7)——元组与字典_元组


遍历字典中所有值


Python入门(7)——元组与字典_元组_02

    使用 values() 方法,可以取到字典中的所有值,但是这里并没有剔除重复项,如果想要剔除重复项,可以使用 set() 函数把列表转换为集合。

>>> scores = {'Chinese': 95, 'Math': 96, 'English': 95}
>>> for score in scores.values():
print(score)



95
96
95
>>> for score in set(scores.values()):
print(score)



96
95



Python入门(7)——元组与字典_元组


检查字典中是否存在键或值


Python入门(7)——元组与字典_元组_02

    调用上面讲过的获取键列表和值列表的方法,搭配使用 in 或 not in 操作符就能检查字典中是否存在键或值。

>>> scores = {'Chinese': 95, 'Math': 96, 'English': 95}
>>> 'Math' in scores.keys()
True
>>> 100 in scores.values()
False



Python入门(7)——元组与字典_元组


设置字典中某个键的默认值


Python入门(7)——元组与字典_元组_02

    我们常常需要为字典中的某个键设置一个默认值,当该键没有任何值时使用它。使用 setdefault() 方法就可以设置字典中某个键的默认值,传入两个参数,一个是要检查的键,第二个是当该键不存在时要设置的值。当该键存在时,返回键的值。当该键不存在时,则返回我们设置的值。

>>> scores = {'Chinese': 95, 'Math': 96}
>>> scores.setdefault('English', 0)
0
>>> print(scores)
{'Chinese': 95, 'Math': 96, 'English': 0}
>>> scores.setdefault('English', 99)
0
>>> print(scores)
{'Chinese': 95, 'Math': 96, 'English': 0}


    当然,我们可以在字典中嵌套列表,可以在列表中嵌套字典,也可以在字典中嵌套字典,在列表中嵌套列表。查询项、添加项、修改项和遍历项的方法基本类似,所以在此处不再讲述这些方法。