元组
元组的定义
不可修改的列表称为元组。
元组定义与列表定义的区别在于列表使用[]
标识,而元组使用()
标识。严格地说,元组是由逗号,
标识的,圆括号只是让元组看起来更整洁。
下面的例子演示了元组如何定义。
>>> 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
检查字典中是否存在键或值
调用上面讲过的获取键列表和值列表的方法,搭配使用in
或not 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}
当然,我们可以在字典中嵌套列表,可以在列表中嵌套字典,也可以在字典中嵌套字典,在列表中嵌套列表。查询项、添加项、修改项和遍历项的方法基本类似,所以在此处不再讲述这些方法。