![Python 3.6从入门到精通(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/593/26793593/b_26793593.jpg)
3.3 字典的基本操作
与列表和元组有所不同,字典是另一种可变容器模型,且可存储任意类型的对象。本节将学习字典的基本操作。
3.3.1 字典对象的常用操作
字典的对象使用大括号{}将元素列出。字典的元素排列并没有一定的顺序,因为可以使用键值来取得该元素。
下面的示例将创建一个字典对象:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd
运行结果如图3-39所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P76_57416.jpg?sign=1739471527-ncLuFGTYz7IOYOZobUGV2sLNMcvnyHBY-0-5b79eb691a50fceee0e181572a6696ac)
图3-39 运行结果
1. 获取字典中的元素值
通过使用键值作为索引,可以返回字典中的元素。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd["名称"] >>>dd["产地"] >>>dd["价格"]
运行结果如图3-40所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P77_57456.jpg?sign=1739471527-fJ8lA6bNkx8SeBkoBf5NtVWKEXjR59IZ-0-16b88d242224884b00dc942d8781e166)
图3-40 运行结果
在获取字典中的元素值时,必须保证输入的键值在字典中是存在的,否则Python会产生一个KeyError错误。
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd["姓名"]
运行结果如图3-41所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P77_57474.jpg?sign=1739471527-76O53ra2eJNABlN3biezo3nVIncMm5FK-0-935de9f23c578227645ca271ac683e96)
图3-41 运行结果
从报错信息可以看出,这里不存在"姓名"的键值。
2. 修改字典中的元素值
字典中的元素值是可以修改的。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd["名称"] = "洗衣机" >>>dd
运行结果如图3-42所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P77_57497.jpg?sign=1739471527-YBeu3JWyCICxB2XtAVON4Uv6FAasJN8s-0-035b09d5812dc35d9b26f6224a991e12)
3. 删除字典中的元素
使用del语句可以删除字典中的元素。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>del dd["名称"] >>>dd
运行结果如图3-43所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P78_57528.jpg?sign=1739471527-2w6uTHzmAZSvPUoHzHqrkI6kxNpKOB9g-0-41eb75f1e2fa5efdffd62f19c7f598d7)
图3-43 运行结果
4. 定义字典键值时需要注意的问题
字典键值是不能随便定义的,需要注意以下两点:
(1)不允许同一个键值多次出现。创建时如果同一个键值被赋值多次,那么只有最后一个值有效,前面重复的值将会被自动删除。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500","产地":"上海", "价格":"8500"} >>>dd
运行结果如图3-44所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P78_57545.jpg?sign=1739471527-iARJc6SAeBcf4t2Ciighc58WCrb6mYPo-0-1e8088b0311011e1ac6f836f2bfae27d)
图3-44 运行结果
(2)因为字典键值必须不可变,所以可以用数字、字符串或元组充当,列表则不行。如果用列表做键值,将会报错。例如:
>>>dd = {["名称"]:"冰箱", "产地":"北京", "价格":"6500"}
运行结果如图3-45所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P79_57567.jpg?sign=1739471527-gPZWXiiqpxQnzb5g1pni4uE1C4YZn64Q-0-b8e1f2ba9980195dad879296033c72c7)
图3-45 运行结果
3.3.2 字典的内置函数和方法
本节主要讲述字典的内置函数和方法。
1. 字典的内置函数
字典的内置函数包括len()、str()和type()。
(1)len(dict):计算字典元素个数,即键值的总数。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>len(dd)
运行结果如图3-46所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P79_57585.jpg?sign=1739471527-uMCZI5PJDh7nS4o0ry9aCYoXy4idx3Al-0-8cbc3a9c25dcddd55c3c409e149413db)
图3-46 运行结果
(2)str(dict):将字典的元素转化为可打印的字符串形式。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>str(dd)
运行结果如图3-47所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P79_57602.jpg?sign=1739471527-8RN7u2Z0wXmeOwYruQLgBmXUo1NKA8hE-0-dae0d2dfe7adf7ed5d9308b3cd585cad)
图3-47 运行结果
(3)type(variable):返回输入的变量类型,如果变量是字典,就返回字典类型。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>type(dd)
运行结果如图3-48所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P80_57627.jpg?sign=1739471527-VIIHq8ZURjpNJdrTxBswAx5AN7xSSIf4-0-c667ba017b96ec72f792a0ef0d1f0a73)
图3-48 运行结果
2. 字典的内置方法
字典对象有许多内置方法,在Python解释器内输入dir({}),就可以显示这些内置方法的名称,结果如图3-49所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P80_57631.jpg?sign=1739471527-DO0azuovH6vABVY0nT2qihwq2wpz9h9K-0-4fcb145b4b9ec55998c9d82ad25a3fa6)
图3-49 字典的内置方法
下面挑选常用的方法进行讲解。
(1)clear():清除字典中的所有元素。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd.clear() >>>dd
运行结果如图3-50所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P80_57654.jpg?sign=1739471527-8BMkfO7g15gMsHSYwmCzLM5BPqyGOyGS-0-5ee04fb7cab6223dfce1be53d2455fa1)
图3-50 运行结果
(2)copy():复制字典。例如:
>>>cc = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd = cc.copy() >>>dd
运行结果如图3-51所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P81_57687.jpg?sign=1739471527-YKvRLNffwDoECSlvt1IODnXpfzWRjY74-0-d498811d4f1897660c9b1294abb935e7)
图3-51 运行结果
(3)get(k [, d]):k是字典的索引值,d是索引值的默认值。如果k存在,就返回其值,否则返回d。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd.get("名称") >>>dd.get("品牌","不存在")
运行结果如图3-52所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P81_57711.jpg?sign=1739471527-xZU6cvaKDnKjdetPXrL027F8832YOgqi-0-73d834307bd0033f2d4f96d99b01859d)
图3-52 运行结果
(4)items():使用字典中的元素创建一个由元组对象组成的列表。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd.items()
运行结果如图3-53所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P81_57728.jpg?sign=1739471527-HyLPEQDcbd72HtDCEGcbPgItrsBbBqZw-0-d51b3f3d5fab1df9c252abd3a00f8371)
图3-53 运行结果
(5)keys():使用字典中的键值创建一个列表对象。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd.keys()
运行结果如图3-54所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P82_57753.jpg?sign=1739471527-udVjr9k1U4qAbuUePoba1wgQkVzAMCcS-0-a2c7e0e3d1c4de7adbda3e58440cac9e)
图3-54 运行结果
(6)popitem():删除字典中的最后一个元素。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd.popitem() >>>dd >>>dd.popitem() >>>dd
运行结果如图3-55所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P82_57788.jpg?sign=1739471527-kBs9HwuKZtzpWNbS05tSXARLoWkhk3at-0-11e8ca513272d126ec6ed66eee1619af)
图3-55 运行结果
(7)setdefault(k [, d]):k是字典的键值,d是键值的默认值。如果k存在,就返回其值;否则返回d,并将新的元素添加到字典中。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd.setdefault("名称") >>>dd >>>dd.setdefault("品牌","海尔") >>>dd
运行结果如图3-56所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P83_57834.jpg?sign=1739471527-aDixqybvd71oAL2JRRdCZzHVZ6wSdgwp-0-8c1bbd008258593ee2c1d68b4f6b6ec3)
图3-56 运行结果
(8)update(E):E是字典对象,由字典对象E来更新此字典。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd.update({"品牌":"海尔"}) >>>dd
运行结果如图3-57所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P83_57857.jpg?sign=1739471527-WWDQAJHmvLxXPs1T6hwNTLh757UzRMn4-0-a98ea1c9ba4b386844327fbd6118e53a)
图3-57 运行结果
(9)values():使用字典中键值的数值创建一个列表对象。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd.values()
运行结果如图3-58所示。
![](https://epubservercos.yuewen.com/1492BD/15253385804109006/epubprivate/OEBPS/Images/Figure-P83_57874.jpg?sign=1739471527-y2U70v9MlaBpvUCaJBmuyl5ld2Eo0CvC-0-8dbb3eaa0793f56a929a21983b8da00f)
图3-58 运行结果