元组

元组的定义

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

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

元组的使用

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

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

	
a
b
c
d
e

字典

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

字典的创建

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

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

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

取字典中指定键的值

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

>>> 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.

在字典中添加键值对

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

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

空字典的创建

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

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

修改字典中的值

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

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

删除字典中的键值对

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

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

遍历字典中所有的键值对

利用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

遍历字典中所有键

使用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

遍历字典中所有值

使用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

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

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

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

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

我们常常需要为字典中的某个键设置一个默认值,当该键没有任何值时使用它。使用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}

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