Python里的字典也是一种集合类型,既然是集合那就是一堆数据用逗号间隔,用花括号括起来。定义看上去和之前的列表、字符串、元组很相似,关键是字典这类集合里数据很特殊!字典里的每项数据不是一个单纯的数据而是称之为一对儿的数据组合,即字典的每项数据有两项且用分号间隔,分号前称之为键key,分号后称之为值value,例如"a" : 12、"liming" : 13类似这样的构成字典的一项数据。
d = {1 : 2, "a" : 13, 12.4 : 77}
print d
程序执行结果:
{'a': 13, 1: 2, 12.4: 77}
看上去好乱!别急,首先要看到,字典d定义时的顺序和打印输出顺序不完全一致,这说明字典真的是无序的集合。另外作为键的可以是任意类型的数据均可,不像索引必须是整形,这是字典这种数据类型的一个重要特点。字典的键要求必须是能够哈希的、唯一不重复,因此字典的键的哈希值应该在对象的生命周期中是不会变的,这样数据查询效果更高、更快,这也就是字典这种集合类型存在的现实意义。如果还未明白字典的意图,可以看下面的例子:
a = [70, 89, 98, 65]
b = {"liming" : 98, "libo" : 89, "wanli" : 70, "xili" : 65}
对于列表a存储了四个数据,对于字典b实际也存储了四个数据,对于列表a怎样知道"libo"的成绩是多少了?但有了字典这种数据可以在b里很可查到"libo"的成绩。尤其是在数据量很大的情况下从列表里找出数据要比从字典里找到某数据要慢的多。通过字典可以构造出类似于数据库里的数据表,这样应用时查询也就更符合实际应用了。
d = {"liming" : 98, "wangli":95, "mali":90, "liping" : 88}
print d
print d["wangli"]
程序执行结果:
{'liming': 98, 'wangli': 95, 'liping': 88, 'mali': 90}
95
字典d等价于下面的一张表格
姓名 |
成绩 |
liming |
98 |
wangli |
95 |
liping |
88 |
mali |
90 |