![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=1738956097-67op9Msxp6OoH87NBcOom6VWIV5S22oO-0-28c0df57d1f6bd61d91801dbef36dac9)
例如,列表name存储若干人的名字(唯一),列表score在对应的位置上存储这些人的成绩,利用字典推导式,以名字为键、成绩为值组成新字典dd。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image117.jpg?sign=1738956097-AfjXkKVWE5kVTchXyI79dd5fi8duw8ai-0-5bb504e6d8214aadd02d3bd5bee316ef)
以名字为键、成绩为值组成新字典exdd,新字典中的键值对只包含成绩80及以上的。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image118.jpg?sign=1738956097-Vh5RmktvBlcKG90xaAP9w7NLlirEVKry-0-7a92f5a04624590ce2ab6b6dda928648)
在上面生成的字典dd中挑出成绩及格的组成新字典pdd。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image119.jpg?sign=1738956097-iX9th48nrppJxMsQTkOTDlyzaZYRvXKF-0-39f96f3e7224d2d2d2ce41ccb35df711)
以名字为键、名字的长度为值组成新字典nd。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image120.jpg?sign=1738956097-V5CevD9Fo8NLtOP9TWnO8kCHaQ22bS28-0-fe0166f9dc944fbfde6bb892cb2223ba)
请大家理解以下字典推导式:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image121.jpg?sign=1738956097-dL2jxupkfIz60PHs17Gj0IdqouDvQ3r7-0-5536b4febf8265b23709167acb967045)
实际上上面的字典推导式在逻辑上等同于以下循环格式:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image122.jpg?sign=1738956097-rNGhQiKCVMOZHyoNjfis6XOfnZ1SDU1V-0-3b3dfd5a6e1e76130f14608f992028cc)
【例4-11】 从键盘输入一个字符串,统计字符出现的次数。请用字典推导式完成。
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image123.jpg?sign=1738956097-ImEa6OMRg1ojzaIqPZH27B8Sd4wPmWmj-0-dc9381f80e99a309133b3cb3ccb9215e)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image124.jpg?sign=1738956097-aV1yV5MDKhaQQqkhF64Mulx9r0iCocaZ-0-c842af88f01cbc7e40ac1eb63f99ffcf)