![Python程序设计教程(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/531/34752531/b_34752531.jpg)
4.2.5 列表、元组与字典之间的转换
1. 列表与字典之间的转化
Python中的list()函数可以将字典转换列表,但列表不能转换为字典。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image52.jpg?sign=1738968649-sv7zsStOHVtOx9QWz66oO34wXEmnDSEy-0-0046f0da7308f13e968c466895a03fe4)
2. 元组与字典之间的转化
Python中的tuple()函数可以将字典转换元组,但元组不能转换为字典。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image53.jpg?sign=1738968649-RBT4VuYRncGczXm4Vek2chujU9y34t7o-0-62144c739fa3e54db5de1a9de049f856)
【例4-5】 假设姓名不重复,现有若干同学的姓名和成绩组成键值对存放在字典stu中。stu={"张琳":58,"孙治平":70,"徐小伟":89,"徐丽萍":69,"童万丽":90,"钱志敏":84,"赵虚余":64},请编程完成如下任务:
(1)在字典中添加姓名为晋宇浩的同学,成绩显示为“缺考”;
(2)张琳的成绩改为60;
(3)删除徐小伟以及她的成绩;
(4)显示原有字典和现有字典;
(5)统计当前总人数;
(6)从键盘输入一个同学的姓名,显示该同学的成绩,如字典中无此同学显示“没找到该同学”。
第1种做法:
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image54.jpg?sign=1738968649-eKMuG7fRGWPUThgD8ocEA1NMwPuGtF2g-0-a3a2743d5c1c5d4d5f2bd0c5232fe4ff)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image55.jpg?sign=1738968649-NJVI0SfUqHq6F99jUQja2cMUJAAN3fob-0-ff926aee575b592a5bcbb8bded41fc15)
程序可能的另一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image56.jpg?sign=1738968649-Ev6uoRUACZIIkGitvRycmU1a97ml367e-0-623f0347fea59c494bc2276fc039d7d2)
第2种做法:
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image57.jpg?sign=1738968649-Fgn257OXWPFEwoz0Qe5n7VOADRcf42K2-0-bc93532378054331b808594b79feb14e)
思考:从键盘输入一个同学的姓名,如果该姓名存在则输出成绩后又可以再次输入姓名输出成绩,直到字典中没有该姓名时程序运行结束。
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image58.jpg?sign=1738968649-gxTHiKYtxrzsERAWLMwa5kVdfeF43EUA-0-b1b6435d8c817e3f297a53ab41cd2ff5)
【例4-6】 某人买了4只股票,编号1~4,股票代码、股票名称和买入价分别是:601398、工商银行、5.51;000001、平安银行、8.94;601939、建设银行、6.89;601328、交通银行、5.61。请用字典实现根据编号查询购买的股票信息。要求:输入编号,可以一直查询购买的股票信息,直到输入编号以外的任意数字显示“无查询结果”,并结束程序。
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image59.jpg?sign=1738968649-xE5cFENPjosw708v8AcnCXldkNFauKTB-0-c8a8ee1c90b49c7ebe8c319d0989f699)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image60.jpg?sign=1738968649-AWX2VsxJibmWLYMW76Ik1IP96mQG4K27-0-df6c916e4c02c04d37ee5616456c37d2)
思考:如何让股票信息不是直接以列表形式显示,而是以“股票代码:601939,股票名称:建设银行,买入价:6.89”这种方式显示,程序如何修改?
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image61.jpg?sign=1738968649-YOx5E4RRcJKB60IueIO5lrkojHI2WvQd-0-95f8191fe1475e0130b84f1177db6d05)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image62.jpg?sign=1738968649-WOkpUqe6oNlTktvbMJ41NMllPPcKGxCY-0-cce5f5232a7ef34d2d4e2c4d3d22b415)
【例4-7】 根据客户等级及订货量计算订货额。
建立字典,客户分ABCD(不区分大小写)类,A类客户享受9折优惠,B类客户享受9.2折优惠,C类客户享受9.5折优惠,D类客户不享受折扣优惠。假定商品标准价格是100元。不管哪一类客户,对不同的订货量,还可享受不同的价格优惠:订货量小于500元无折扣,500~1999元折扣0.05,2000~4999元折扣0.1,5000~20000元折扣0.15,20000元以上折扣0.2。客户可同时享受价格优惠和客户等级优惠。订货量为整数。
要求:只要输入客户等级和订货量,就计算出订货额;客户等级和订货量需判断是否输入正确,客户等级或订货量不输入任何字符或者输入有误,均会退出程序,显示“请输入正确信息,谢谢!”。
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image63.jpg?sign=1738968649-iM6Y4U97Gs9gJCCUea01JozmFuIxIp7Z-0-d40b85b06704950daaa2a863e1053137)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image64.jpg?sign=1738968649-7yDbb3mRs5AgxEVuRKpGAbKBFx3MjcLs-0-9130e1583631533e3c00428bde59c154)
思考:请结合第3章控制结构的相关知识,说明需要设计怎样的测试用例才能把每个分支都检测到?