在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Python/ python:如何連續(xù)使用方法

python:如何連續(xù)使用方法

inverse.setdefault(val, []).append(key)

請(qǐng)問這句話實(shí)現(xiàn)什么功能,使用一個(gè)方法很好理解,可連續(xù)使用兩個(gè)方法我不明白值是怎么傳遞的了。

以下是完整的代碼

def invert_dict(d):
    inverse = {}
    for key in d:
        val = d[key]
        inverse.setdefault(val, []).append(key)
    return inverse
回答
編輯回答
吢涼

inverse.setdefault(val, []).append(key)

它等同于:

if val not in inverse:
    inverse[val] = []
inverse[val].append(key)

更詳細(xì)一點(diǎn),如果把setdefaultappend拆開來看的話

首先調(diào)用inverse.setdefault(val, []),意思是如果val這個(gè)鍵不存在的話,就添加這個(gè)鍵,并且值為[],如果存在的話就什么都不發(fā)生

然后再調(diào)用append(key),這里就是往[]里添加數(shù)據(jù)了

如果不調(diào)用setdefault(val, [])而直接調(diào)用inverse[val].append(key)的話,那么當(dāng)val這個(gè)鍵不存在時(shí),會(huì)報(bào)異常

>>> d = {}
>>> d[1].append(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 1

而調(diào)用setdefault(val, [])則沒有這個(gè)問題

>>> d = {}
>>> d.setdefault(1, []).append(2)
>>> print(d)
{1: [2]}
2018年7月4日 16:48