![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=1738956734-mPEYFoZCaZMQafQC4vicpJLXukfPyC2V-0-78d3f6dc266284ff392fa998c22ab0bc)
例如,列表name存储若干人的名字(唯一),列表score在对应的位置上存储这些人的成绩,利用字典推导式,以名字为键、成绩为值组成新字典dd。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image117.jpg?sign=1738956734-PGaFgLf0D9qBxoGEV6dyKpLDBMFG58b6-0-93a4d6786affbf1c55f9ddf8a6a28245)
以名字为键、成绩为值组成新字典exdd,新字典中的键值对只包含成绩80及以上的。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image118.jpg?sign=1738956734-dBGVpOOMzA0A4sRNH8tqSnMlOIJBrEWD-0-166d8cd6b707b099a81013bd38e9f456)
在上面生成的字典dd中挑出成绩及格的组成新字典pdd。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image119.jpg?sign=1738956734-c9980iAvAZwbNFcM43AsTMT5YOHFVtI0-0-2aa32d9104d062aa138037b1948571bb)
以名字为键、名字的长度为值组成新字典nd。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image120.jpg?sign=1738956734-xg0YJiedWYOoe4lXcxscHkMsdeEoctQ5-0-1e7a98d40f5901646fdc347fbd847c51)
请大家理解以下字典推导式:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image121.jpg?sign=1738956734-L6L5KDywF4v76qKzfB7XS7QCXIr2M5XJ-0-b39692b5fe0c13e2cb89aecbb7a9f5bb)
实际上上面的字典推导式在逻辑上等同于以下循环格式:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image122.jpg?sign=1738956734-9wZi9qYyAWQTgLs3gXdHfI3aXQi0JaZy-0-cbc9abfec686d210e7b033ee4b7aebc3)
【例4-11】 从键盘输入一个字符串,统计字符出现的次数。请用字典推导式完成。
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image123.jpg?sign=1738956734-tDtTZCzEyPOc3rnZMFTEGLNhCWEVZLM2-0-19db3b5687fd586ee81b601c6c86d6ac)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image124.jpg?sign=1738956734-t56jIVLGqISn97lLQsX1QzurRButgA9v-0-6386738bee7af82a1f42ebe79fcc7d9b)