当前位置: 首页 > 后端技术 > Python

Python代码阅读(第33篇):逆向字典

时间:2023-03-26 12:30:03 Python

Python代码阅读宝典介绍:为什么不建议Python初学者直接看项目源码?本文阅读的代码实现了对一个字典进行逆向,并且原始字典的值不唯一。本文阅读的代码片段来自30-seconds-of-python。collect_dictionarydefcollect_dictionary(obj):inv_obj={}forkey,valueinobj.items():inv_obj.setdefault(value,list()).append(key)returninv_obj#EXAMPLESages={"Peter":10,"伊莎贝尔":10,"Anna":9,}collect_dictionary(ages)#{10:["Peter","Isabel"],9:["Anna"]}collect_dictionary函数接收字典并返回倒排字典。该函数使用dictionary.items()循环遍历原始字典的每个键值对,并使用dictionary.setdefault()和append()将原始字典的值映射到键。使用list()将新键的值定义为列表。因为原来字典的所有值都不是唯一的,所以在对字典进行逆向后,新的key也可能对应多个值。所以倒排字典的值是一个列表,每个列表中的元素是原字典的一个或多个键。dictionary.setdefault(key[,default])如果字典有键key,返回它的值。如果不存在,则插入值为default的键key,返回default。forkey,valueinobj.items():inv_obj.setdefault(value,list()).append(key)如果新字典inv_obj已经有key==value,则返回这个key对应的值(一个列表),然后使用append将原始字典的键添加到它。如果新字典inv_obj没有key==value,它会插入key,将其value设置为list(),并返回空列表。然后使用append将原始字典的键添加到其中。