字典类型的概念
前面学过的列表是存储和检索数据的有序序列。当访问列表中的元素时,可以通过整数索引来查找它,这个索引就是元素在列表中的序号,列表的索引模式是:<整数序号>查找<被索引内容>。
但很多应用程序需要更加灵活的信息查找方式。如,在检索学生或员工信息时,需要基于身份证号码来查找,而不是信息存储的序号。在编程术语中,根据一个信息查找另一个信息的方式构成了“键值对”,它表示索引引用的键和对应的值构成的成对关系,即通过一个特定的键来访问值。
映射:通过任意键信息查找一组数据中值的信息的过程叫做映射,映射是一种键(索引)和值(数据)的对应。在Python语言中,通过字典来实现映射。字典是键值对的集合,键值对之间是无序的,但不能重复。
字典的建立:Python语言中,字典可以通过大括号{}建立,也可以用dict()建立,键值对用冒号:表示。
{<键1>:<值1>,<键2>:<值2>,……,<键n>:<值n>}
前面讲过集合也可以用{}建立,但注意:空集合必须用set()建立。
下面是字典的一些应用
>>> dictionary={"China":"Beijing","USA":"Washington","France":"Pairs"}
>>> print(dictionary)
{'China': 'Beijing', 'USA': 'Washington', 'France': 'Pairs'}
>>> dictionary["China"] #查找对应值
'Beijing'
>>> dictionary["China"]='Shanghai' #修改值
>>> print(dictionary)
{'China': 'Shanghai', 'USA': 'Washington', 'France': 'Pairs'}
字典类型的操作函数和方法
del d[k] 删除字典d中键k对应的数据
k in d 判断键k是否在字典d中,如果在返回true,否则返回false
d.key() 返回字典d中所有的键信息
d.values() 返回字典d中所有的值信息
d.items() 返回字典d中所有的键值对信息
下面是具体的实现:
>>> d = {"China":"Beijing","USA":"Washington","France":"Pairs"}
>>> "China" in d
True
>>> d.keys()
dict_keys(['China', 'USA', 'France'])
>>> d.values()
dict_values(['Beijing', 'Washington', 'Pairs'])
>>> d.items()
dict_items([('China', 'Beijing'), ('USA', 'Washington'), ('France', 'Pairs')])
d.get(k,<default>) 键k存在,则返回对应值,不存在则返回<default>值
d.pop(k,<default>) 键k存在,则取出对应值,不在,则返回<default>值
d.popitem() 随机从字典d中取出一个键值对,以元组形式返回
d.clear() 删除所有的键值对
len(d) 返回字典d中元素的个数
下面是具体的实现:
>>> d = {"China":"Beijing","USA":"Washington","France":"Pairs"}
>>> d.get("China","London")
'Beijing'
>>> d.get("UK","London")
'London'
>>> d.pop("USA","London")
'Washington'
>>> d.popitem()
('France', 'Pairs')
>>> len(d)
2
字典类型应用场景
映射的表达
例如:统计数据出现的次数,数据是键,次数是值。
最主要的作用:表达键值对数据,进而操作它们
元素遍历:
for k in d:
<语句块>
>>> for k in d:
print(k)
China
USA
France
由于键值对中的键相当于索引,因此,for循环返回的变量名是字典的索引值。如果需要获得键对应的值,可以在语句块中通过get()方法获得。