本节我们的主角是Python中的字典。字典是一个数据结构,通过给定key来获取响应的值(是一个key-value对的形式)。 下面的例子展示了以同学的名字为索引,值为年龄的字典:
ages = {
"Peter": 10,
"Isabel": 11,
"Anna": 9,
"Thomas": 10,
"Bob": 10,
"Joseph": 11,
"Maria": 12,
"Gabriel": 10,
}
>>> print(ages["Peter"])
10
使用字典的items
可以迭代出其中的内容,比如这样:
>>> for name, age in ages.items():
... print(name, age)
...
Peter 10
Isabel 11
Anna 9
Thomas 10
Bob 10
Joseph 11
Maria 12
Gabriel 10
不过,字典的key并不需要是一个字符串,它可以是任何不可变对象:
d = {
0: [0, 0, 0],
1: [1, 1, 1],
2: [2, 2, 2],
}
>>> d[2]
[2, 2, 2
同时你可以将另一个字典作为某个值写入:
students = {
"Peter": {"age": 10, "address": "Lisbon"},
"Isabel": {"age": 11, "address": "Sesimbra"},
"Anna": {"age": 9, "address": "Lisbon"},
}
>>> students['Peter']
{'age': 10, 'address': 'Lisbon'}
>>> students['Peter']['address']
'Lisbon'
也正因为这样,这种数据结构非常容易书写阶级式内容。
自行研究Python文档 https://docs.python.org/3/library/stdtypes.html#mapping-types-dict 来解决下列练习。
先定义一个Python字典:
ages = {
"Peter": 10,
"Isabel": 11,
"Anna": 9,
"Thomas": 10,
"Bob": 10,
"Joseph": 11,
"Maria": 12,
"Gabriel": 10,
}
new_ages(ages, 10)
返回的是“ages”字典的拷贝并且每个同学的年龄都是10。先定义一个字典:
students = {
"Peter": {"age": 10, "address": "Lisbon"},
"Isabel": {"age": 11, "address": "Sesimbra"},
"Anna": {"age": 9, "address": "Lisbon"},
}
find_students(students, 'Lisbon')
会返回['Peter', 'Anna']
。