
Python 代碼閱讀合集介紹:為什么不推薦Python初學(xué)者直接看項目源碼
本篇閱讀的代碼基于輸入的源字典創(chuàng)建一個新的字典,保持key值不變,vaule值是源字典對應(yīng)vaule進(jìn)行映射獲得的。
本篇閱讀的代碼片段來自于30-seconds-of-python。
map_values
def map_values(obj, fn):
ret = {}
for key in obj.keys():
ret[key] = fn(obj[key])
return ret
# EXAMPLES
users = {
'fred': { 'user': 'fred', 'age': 40 },
'pebbles': { 'user': 'pebbles', 'age': 1 }
}
map_values(users, lambda u : u['age']) # {'fred': 40, 'pebbles': 1}
map_values函數(shù)輸入一個字典obj和映射fn,初始化一個新的字典,并針對輸入字典的每個k-v對,保持key值不變,使用映射fn計算新value值。
dict.keys()返回字典的key 組成的新視圖。
dict[key]返回key所對應(yīng)的value值。
dict[key] = value將dict[key]的值設(shè)置為value。
map_values函數(shù)首先新建了一個空字典ret,然后遍歷輸入字典的所有key,針對每個value使用映射fn獲取新的value,并將新字典的key設(shè)置成新的value。