![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=1738956183-vXvqirmNYfymkQUK6MAA6797evxxHc0S-0-f483677a8ac8844112ace3a774449b17)
2. 元组与字典之间的转化
Python中的tuple()函数可以将字典转换元组,但元组不能转换为字典。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image53.jpg?sign=1738956183-yjfctq8JFBpKvXKwOiB7FcdfSeDYwKTy-0-80349972f8afcc5c4780b21c0e027a5f)
【例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=1738956183-xz5KnmqjsWjnzxKkaCzUZTqMUXEsIeb0-0-98cfa590051f9c00883ed30267ea3108)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image55.jpg?sign=1738956183-hPKx7xkFhqpwOfQuL2Ka2epGfDtKfWe3-0-d00eaea7f44108d3fcac4d4477f2212f)
程序可能的另一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image56.jpg?sign=1738956183-BRCxsTlv3N8cBH3LrzeyxBk56BbXAVqI-0-9c9edfb0441fbb002deddb36f4cb6682)
第2种做法:
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image57.jpg?sign=1738956183-b3wt7ZPa61O0onG0z3QK0Acw3frkOMxl-0-f0c5001ac6736b1a6236bfe4bb991574)
思考:从键盘输入一个同学的姓名,如果该姓名存在则输出成绩后又可以再次输入姓名输出成绩,直到字典中没有该姓名时程序运行结束。
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image58.jpg?sign=1738956183-nWephghKB6PE5yWKXASEXdT4gXOp98Jg-0-bcf6455c5147674b86283fc60a3c9296)
【例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=1738956183-LVwcs1px43RuvtJqYkZcKvfuvE1VBCs4-0-df0770f04d6df668bf315311a26d4448)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image60.jpg?sign=1738956183-f2WPvpYLCnzknommyxXelY7FW6ahxgZ1-0-920952569eaeb6e1f6a945a3f068fb4f)
思考:如何让股票信息不是直接以列表形式显示,而是以“股票代码:601939,股票名称:建设银行,买入价:6.89”这种方式显示,程序如何修改?
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image61.jpg?sign=1738956183-XwEb0X6FpS6tVT7ODTMDAQpENPSunoe5-0-9d3fcda23d5226524906a30d80243e6f)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image62.jpg?sign=1738956183-49aavazVVUXUPp0iRLULMOwc9lcUjk7v-0-01ce7ed1eda12d59930f598e85991696)
【例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=1738956183-dolZSDixiSJ2Y3OxIwI30XzoVB3HcvgT-0-6402836687533464f0000b1aed866338)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image64.jpg?sign=1738956183-2LufDdplN5eOJ6YRirzaQSEJQb4dRxdF-0-a8e75e0b54280e42e9439f70ec29b9e2)
思考:请结合第3章控制结构的相关知识,说明需要设计怎样的测试用例才能把每个分支都检测到?