4.5 字典类型
微视频
与列表和元组有所不同,字典是另一种可变容器模型,且可存储任意类型的对象。本节讲述字典的基本操作。
4.5.1 认识字典类型
字典(Dictionary)是Python内非常有用的数据类型。字典使用大括号({})将元素列出。元素由键值(key)与数值(value)组成,中间以冒号(:)隔开。键值必须是字符串、数字或元组,这些对象是不可变动的;数值则可以是任何数据类型。字典的元素排列没有一定的顺序,因为可以使用键值来取得该元素。
创建字典的语法格式如下:
字典变量={关键字1:值1,关键字2:值2,…}
☆大牛提醒☆
在同一个字典之内,关键字必须互不相同。创建字典并访问字典中的元素。
>>>x={'一班': '张小明','二班': '李萌','三班': '张小明'} >>>x ['一班'] '张小明' >>>x ['二班'] '李萌' >>>x ['三班'] '张小明'
从结果可以看出,字典中的关键字必须唯一,但是关键字对应的值可以相同。
☆大牛提醒☆
在获取字典中的元素值时,必须保证输入的键值在字典中是存在的,否则Python会产生一个KeyError错误。
4.5.2 字典的常用操作
字典的常用操作如下:
1.修改字典中的元素值
字典中的元素值是可以修改的。例如:
>>>x={'一班': '张小明','二班': '李萌','三班': '张小明'} >>>x['三班'] = '张昌隆' >>>x {'一班': '张小明', '二班': '李萌', '三班': '张昌隆'}
2.删除字典中的元素
使用del语句可以删除字典中的元素。例如:
>>>x = {'一班': '张小明', '二班': '李萌', '三班': '张昌隆'} >>>del x["三班"] >>>x {'一班': '张小明', '二班': '李萌'}
3.定义字典键值时需要注意的问题
字典键值是不能随便定义的,需要注意以下两点:
(1)不允许同一个键值多次出现。创建时如果同一个键值被赋值多次,那么只有最后一个值有效,前面重复的值将会被自动删除。例如:
>>>x = {'一班': '张小明', '二班': '李萌', '一班': '张昌隆', '二班': '王明霞'} >>>x {'一班': '张昌隆', '二班': '王明霞'}
(2)因为字典键值必须不可变,所以可以用数字、字符串或元组充当,列表则不行。如果用列表做键值,将会报错。例如:
>>>x = {["名称"]:"冰箱", "产地":"北京", "价格":"6500"} Traceback (most recent call last): File "<pyshell#33>", line 1, in <module> x = {["名称"]:"冰箱", "产地":"北京", "价格":"6500"} TypeError: unhashable type: 'list'
4.5.3 字典的内置函数和方法
本节主要讲述字典的内置函数和方法。
1.字典的内置函数
字典的内置函数包括len()、str()和type()。
(1)len(dict):计算字典元素个数,即键值的总数。例如:
>>>x = {'一班': '张昌隆', '二班': '王明霞'} >>>len(x) 2
(2)str(dict):将字典的元素转换为可打印的字符串形式。例如:
>>>x = {'一班': '张昌隆', '二班': '王明霞'} >>>str(x) "{'一班': '张昌隆', '二班': '王明霞'}"
(3)type(variable):返回输入的变量类型,如果变量是字典,就返回字典类型。例如:
>>>x = {'一班': '张昌隆', '二班': '王明霞'} >>>type(x) <class 'dict'>
2.字典的内置方法
字典对象有许多内置方法,在Python解释器内输入dir({}),就可以显示这些内置方法的名称。下面挑选常用的方法进行讲解。
(1)clear():清除字典中的所有元素。例如:
>>>x = {'一班': '张昌隆', '二班': '王明霞'} >>>x.clear() >>>x {}
(2)copy():复制字典。例如:
>>>x = {'一班': '张昌隆', '二班': '王明霞'} >>>y = x.copy() >>>y {'一班': '张昌隆', '二班': '王明霞'}
(3)get(k [, d]):k是字典的索引值,d是索引值的默认值。如果k存在,就返回其值,否则返回d。例如:
>>>x = {'一班': '张昌隆', '二班': '王明霞'} >>> x.get("一班") '张昌隆' >>> x.get("三班","不存在") '不存在'
(4)items():使用字典中的元素创建一个由元组对象组成的列表。例如:
>>>x = {'一班': '张昌隆', '二班': '王明霞'} >>>x.items() dict_items([('一班', '张昌隆'), ('二班', '王明霞')])
(5)keys():使用字典中的键值创建一个列表对象。例如:
>>>x = {"名称":"西瓜", "产地":"吐鲁番", "价格":"6.26"} >>>x.keys() dict_keys(['名称', '产地', '价格'])
(6)popitem():删除字典中的最后一个元素。例如:
>>>x = {"名称":"西瓜", "产地":"吐鲁番", "价格":"6.26"} >>> x.popitem() ('价格', '6.26') >>> x {'名称': '西瓜', '产地': '吐鲁番'} >>>x.popitem() ('产地', '吐鲁番') >>> x {'名称': '西瓜'}
【例4.4】制作火车票查询系统(源代码\ch04\4.4.py)。
这里模拟火车票查询系统,输入车次编号,输出本次列车的出发站和终点站。
aa=["G15","C2065","Z95","G565"] #定义键的列表 bb=["北京南—上海","北京南—天津","北京西—重庆北","北京西—郑州东"]#定义值的列表 cc=dict(zip(aa,bb)) #转换为字典 print ("欢迎进入火车票查询系统") print (cc) n=input("请输入需要查询的车次:") print (n+"次车的出发站和终点站是:",cc.get(n))
程序运行结果如图4-4所示。
图4-4 例4.4的程序运行结果