chapter7 字典
字典是一种类似于列表的数据结构,不同之处在于用自定义的关键字作为数据的索引,且每个关键字下的数据内容可为多个。
注意列表的定义格式(此处用字符串作为字典的索引)
ages={
"Peter":10,
"Isabel":11,
"Anna":9,
"Thomsas":10,
"Bob":10,
"Joseph":11,
"Maria":12,
"Gabriel":10,
}
print(ages["Peter"])
利用数值作为字典的索引,列表作为每个索引下的内容
d={
0:[0,0,0],
1:[1,1,1],
2:[2,2,2],
}
print(d[2])
[2, 2, 2]
for语句遍历字典的关键字
for name in ages:
print(ages[name])
11
9
10
10
10
10
12
11
for语句遍历字典的内容values()
for age in ages.values():
print(age)
10
10
11
10
9
11
10
12
for语句遍历字典的关键字和内容items()
for name,age in ages.items():
print(name,age)
Peter 10
Isabel 11
Joseph 11
Anna 9
Gabriel 10
Maria 12
Bob 10
Thomsas 10
每个索引关键字下存放多个内容
students={
"Peter":{"ages":10,"address":"Lisbon"},
"Isabel":{"age":11,"address":"Sesimbra"},
"Anna":{"age":9,"address":"Lisbon"}
}
print(students["Peter"])
print(students['Peter']['ages'])
{'address': 'Lisbon', 'ages': 10}
10
for语句遍历字典的索引
for name in students:
print(students[name])
{'address': 'Sesimbra', 'age': 11}
{'address': 'Lisbon', 'age': 10}
{'address': 'Lisbon', 'age': 9}
for语句遍历字典的内容values
for value in students.values():
print(value)
{'age': 10, 'address': 'Lisbon'}
{'age': 11, 'address': 'Sesimbra'}
{'age': 9, 'address': 'Lisbon'}
for value in students.values():
print(value['age'])
11
9
10
for语句遍历字典中的索引和内容
for name,value in students.items():
print(name,value)
Peter {'age': 10, 'address': 'Lisbon'}
Isabel {'age': 11, 'address': 'Sesimbra'}
Anna {'age': 9, 'address': 'Lisbon'}
len(dict)函数,返回字典的长度,关键字的个数
d[key]函数,返回关键字key下的内容
d[key]=value函数,给关键字key下的内容赋值
del d[key]函数,删除关键字key及其内容
计算列表中学生的平均年龄
def get_ave(dictionary):
s=0
for name,age in dictionary.items():
s=s+age
return s/len(dictionary)
print(get_ave(ages))
返回最年长学生的名字
def oldest(dictionary):
oldest_name="none"
oldest_age=0
for name,age in dictionary.items():
if age>oldest_age:
oldest_age=age
oldest_name=name
return oldest_name
print(oldest(ages))
生成一个新的字典,记录年龄大于n的学生
def new_ages(dictionary,n):
new_ages={}
for name,age in dictionary.items():
if age>n:
new_ages[name]=age
return new_ages
print(new_ages(ages,9))
print(len(new_ages(ages,9)))
计算学生的平均年龄
def get_ave(dictionary):
s=0
for value in dictionary.values():
s=s+value['age']
return s/len(dictionary)
print(get_ave(students))
10.0