![Python程序设计教程(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/531/34752531/b_34752531.jpg)
上QQ阅读APP看书,第一时间看更新
4.5.2 字典推导式
字典推导式和列表推导式的使用方法类似,只不过将中括号变成大括号,并且需要两个表达式,一个生成键,一个生成值,两个表达式之间使用冒号分隔,最后生成的是字典。
语法形式:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image116.jpg?sign=1739363718-KwmZLi9MR64Ny3ICsJL5T2eEhQQbJeEc-0-2d6904bba6de6fd9fb6eb24c9ac23251)
例如,列表name存储若干人的名字(唯一),列表score在对应的位置上存储这些人的成绩,利用字典推导式,以名字为键、成绩为值组成新字典dd。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image117.jpg?sign=1739363718-xzUHAzuqhDIfqmf1ah5g90dJ8lIIG4zq-0-d9b99526d2071817fca5ba6fe9b5f038)
以名字为键、成绩为值组成新字典exdd,新字典中的键值对只包含成绩80及以上的。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image118.jpg?sign=1739363718-ymXLsqiMWPj0Q6QBwRInux3BexsEGVGP-0-928d2d868d42f1b487d02ba3e302ef18)
在上面生成的字典dd中挑出成绩及格的组成新字典pdd。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image119.jpg?sign=1739363718-sM72dJlbhwuD0mU8qgNx49nEyryDCJbi-0-2c9458c0ee307db1df3ec803b25609e2)
以名字为键、名字的长度为值组成新字典nd。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image120.jpg?sign=1739363718-cu5lntFN0IVjeEf7To8Ngojb645kwYDi-0-bf5942c7c81b4f0e13b14a576a639ae8)
请大家理解以下字典推导式:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image121.jpg?sign=1739363718-tZG1a0gIozvlGl9xwsJIydG0zLsskind-0-37ce929452fc48ce4f8b3f7644fabb8c)
实际上上面的字典推导式在逻辑上等同于以下循环格式:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image122.jpg?sign=1739363718-inbCMGwRqygxwT5MYjAiQiAvqN6SnzLI-0-7ffa3ff4a3c850f01332ff3eeeecd1dc)
【例4-11】 从键盘输入一个字符串,统计字符出现的次数。请用字典推导式完成。
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image123.jpg?sign=1739363718-pQGRYXvFwEIawgQw0fuBATWtpyG8pA58-0-f17e939517ad4505206cc49a625b638b)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image124.jpg?sign=1739363718-PVC9RrPlou8EyuNVIkPQZrxQgz5NCNfk-0-407669e87d0f932386fa0cf497aab340)