![Python 3.7从入门到精通(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/212/31476212/b_31476212.jpg)
3.3 字典的基本操作
与列表和元组有所不同,字典是另一种可变容器模型,且可存储任意类型的对象。本节将学习字典的基本操作。
3.3.1 字典对象的常用操作
字典的对象使用大括号{}将元素列出。字典的元素排列并没有一定的顺序,因为可以使用键值来取得该元素。
下面的示例将创建一个字典对象:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd
运行结果如图3-39所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P70_6355.jpg?sign=1739660668-muHWlLTOaybL1t4Q6XsoenR1kK0PsOyO-0-ca66e03ac4adeaac3633db4ed71323eb)
图3-39 运行结果
1. 获取字典中的元素值
通过使用键值作为索引,可以返回字典中的元素。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd["名称"] >>>dd["产地"] >>>dd["价格"]
运行结果如图3-40所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P71_6403.jpg?sign=1739660668-ecBVdtP7jOtmy9BqOZOgNW5xmdMwOU60-0-723779de134c6b12b0ca30bdef36b55e)
图3-40 运行结果
在获取字典中的元素值时,必须保证输入的键值在字典中是存在的,否则Python会产生一个KeyError错误。
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd["姓名"]
运行结果如图3-41所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P71_6427.jpg?sign=1739660668-miIw7aii9DMzoGxHx3ym4O98fshmbvBh-0-9f24700529f8e55da41cca9fae449d66)
图3-41 运行结果
从报错信息可以看出,这里不存在"姓名"的键值。
2. 修改字典中的元素值
字典中的元素值是可以修改的。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>dd["名称"] = "洗衣机" >>>dd
运行结果如图3-42所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P71_6457.jpg?sign=1739660668-VhDybRvI7GIw4ZY4RwlmCxyY3ulcMpvE-0-f9c5961c47d5148b56351a471e0b59ff)
图3-42 运行结果
3. 删除字典中的元素
使用del语句可以删除字典中的元素。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>del dd["名称"] >>>dd
运行结果如图3-43所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P72_6494.jpg?sign=1739660668-zlt3CipgPlgFLLEOozave9FRhYLimahx-0-22baf1769417af69e6e9781dae94680b)
图3-43 运行结果
4. 定义字典键值时需要注意的问题
字典键值是不能随便定义的,需要注意以下两点:
(1)不允许同一个键值多次出现。创建时如果同一个键值被赋值多次,那么只有最后一个值有效,前面重复的键值将会被自动删除。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500","产地":"上海", "价格":"8500"} >>>dd
运行结果如图3-44所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P72_6517.jpg?sign=1739660668-X4s4MgpgeNeLzDeyv6vxBWT4BRd8vNg8-0-b05d2b1488046efc20fe6f784b708677)
图3-44 运行结果
(2)因为字典键值必须不可变,所以可以用数字、字符串或元组充当,列表则不行。如果用列表做键值,将会报错。例如:
>>>dd = {["名称"]:"冰箱", "产地":"北京", "价格":"6500"}
运行结果如图3-45所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P72_6534.jpg?sign=1739660668-9k0VUEHO7V4FV2lCgmNpijr4S5CwsfsS-0-6e54fc720a2ecee1efbcde48dd71e054)
图3-45 运行结果
3.3.2 字典的内置函数和方法
本节主要讲述字典的内置函数和方法。
1. 字典的内置函数
字典的内置函数包括len()、str()和type()。
(1)len(dict):计算字典元素个数,即键值的总数。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>len(dd)
运行结果如图3-46所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P73_6569.jpg?sign=1739660668-VoWJZ06wALORjn3VvB2hRkf48JtY7GJe-0-83cf38300831124d108712f488631d75)
图3-46 运行结果
(2)str(dict):将字典的元素转化为可打印的字符串形式。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>str(dd)
运行结果如图3-47所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P73_6592.jpg?sign=1739660668-Uo6bzkk6xTkU5yQBec8B8H8E8rox51S2-0-82dbd3c3ada936f981652eb75563361f)
图3-47 运行结果
(3)type(variable):返回输入的变量类型,如果变量是字典,就返回字典类型。例如:
>>>dd = {"名称":"冰箱", "产地":"北京", "价格":"6500"} >>>type(dd)
运行结果如图3-48所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P73_6615.jpg?sign=1739660668-2U4vL3UF1pecq3R3TzOqGVFxxj4nOni9-0-5c163ef5675428d77d2fdee57c775e93)
图3-48 运行结果
2. 字典的内置方法
字典对象有许多内置方法,在Python解释器内输入dir({}),就可以显示这些内置方法的名称,结果如图3-49所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P73_6625.jpg?sign=1739660668-017zfHEkLK6PM9vbQBY2aqRckCahMwhh-0-2484d1f47fb0a676764741ce5fffbbfa)
图3-49 字典的内置方法
下面挑选常用的方法进行讲解。
(1)clear():清除字典中的所有元素。例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P74_57153.jpg?sign=1739660668-ZwpCpYDuJBkZTligaxyOxSxqQ0wT42n3-0-87c6cc4dc4d242ea3f9e606cd7f9181e)
运行结果如图3-50所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P74_6662.jpg?sign=1739660668-amS43sXAF6rioEQmQ4QaY2ZC187DcKHb-0-aab5a2d055d0b1b61676403bdf376689)
图3-50 运行结果
(2)copy():复制字典。例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P74_57154.jpg?sign=1739660668-PaR8ScSGeg60VyaEw4GksesbUPBHM3tk-0-56f3141496d96576f75134303279e75c)
运行结果如图3-51所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P74_6692.jpg?sign=1739660668-vqQKkzHLTDGvQORuQnaTh6BoOQhTm4by-0-0bcd8f13f83a5f7fdcf25537da763f82)
图3-51 运行结果
(3)get(k [, d]):k是字典的索引值,d是索引值的默认值。如果k存在,就返回其值,否则返回d。例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P74_57155.jpg?sign=1739660668-S4HoGtbF9GIP1Ixw73T1mdUf7pozV0mF-0-70c2fe511df2ff1cbd07bb93ed2e11af)
运行结果如图3-52所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P74_6723.jpg?sign=1739660668-5d5ab1qcHIh2KCBj1xQMqAmrraQd8KI9-0-61267f22e2a2cdb99852a7f6f248f0e1)
图3-52 运行结果
(4)items():使用字典中的元素创建一个由元组对象组成的列表。例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P74_57156.jpg?sign=1739660668-i7kIzhPZrPaCCOEeocDI3AeYdSOcTHI8-0-cc765fd5a9badafd9959045c846efdbb)
运行结果如图3-53所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P75_6757.jpg?sign=1739660668-a0Mblf9U9Pc0TVImExmpkUE1pKGZYZka-0-ae90d976cd5912b5fc78d29e31939035)
图3-53 运行结果
(5)keys():使用字典中的键值创建一个列表对象。例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P75_57158.jpg?sign=1739660668-t48Yumt63h3qwNMdLOWOZZnp5kxPummp-0-8d038b584e993c9a7a0bf7e5a4a163f1)
运行结果如图3-54所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P75_6780.jpg?sign=1739660668-Gt6oof3GbRRc1ZGg4Lk0oZpLtB6BMh9W-0-b2e5cd2fedfd09070812675cddf42968)
图3-54 运行结果
(6)popitem():删除字典中的最后一个元素。例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P75_57157.jpg?sign=1739660668-LMDAXDD6IEU3RXTPi7xowPjCagtqaoZW-0-248ad87adfe8281eec9f7ad35eecef7a)
运行结果如图3-55所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P75_6820.jpg?sign=1739660668-sRSQbqSJ1PRUQlv6EFM1VmjGhiTD9dIH-0-a50c7ccb2af9f56f16944a0aadc91605)
图3-55 运行结果
(7)setdefault(k [, d]):k是字典的键值,d是键值的默认值。如果k存在,就返回其值;否则返回d,并将新的元素添加到字典中。例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P75_57159.jpg?sign=1739660668-Hd1pWSea7cKyUsZnKaY03dXj4Iw1EvG8-0-31b8c1b612f7bad50279625e22ecffa7)
运行结果如图3-56所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P76_6870.jpg?sign=1739660668-EcsRUbLr1XGtNRZB9qTsGlfQqfAYE63Y-0-0a79f362fce9601d9858c96dc67e38bc)
图3-56 运行结果
(8)update(E):E是字典对象,由字典对象E来更新此字典。例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P76_57165.jpg?sign=1739660668-WFIvO5PXRn04cvrAZWzmbxzQdPgqAzrd-0-63bc821dd1c7cf66e09b77d7597130fe)
运行结果如图3-57所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P76_6899.jpg?sign=1739660668-H1488JihyPMUIUyXOJ3NYiDNxZRbfx5w-0-204222079640ca59e8cb9ed31f560552)
图3-57 运行结果
(9)values():使用字典中键值的数值创建一个列表对象。例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P76_57166.jpg?sign=1739660668-KTC4TBBzjbqdZlJMxhxIBZHyCc8GEVda-0-16b2b1a97baf9b5b6995873ef67e98cd)
运行结果如图3-58所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P76_6922.jpg?sign=1739660668-BUvRUBRoMyAApE9ypHnzwbjHQut1cJe4-0-131c6e94051b5ef9805a8de4af727278)
图3-58 运行结果