2014-09-30 49 views
0

我做在Python殼以下:字典setdefault方法如何工作?

a = [0, 1] 
b = [2, 4] 
c = [2, 0] 
d = [4, 3] 

e = [a, b, c, d] 
neighbour_list = {} 

,我想嘗試以下方法:

neighbour_list.setdefault(x, []) 

然後

print(neighbour_list) 

打印

{4: []} 

我不明白它在做什麼。爲什麼py被python選爲4?

+2

什麼是'neighbour_list'?你在變量'x'中有什麼? – Hrabal 2014-09-30 10:34:49

+0

爲什麼當你的代碼中沒有使用變量'a,b,c,d,e'和'abcd_list'時,你沒有提供'neighbour_list'和'x'這兩個變量實際相關變量? – 2014-09-30 10:52:06

+0

我的壞abdc_list實際上是neighbour_list,而x沒有定義我只是隨機地將它放在shell中,看看它會有什麼動作 – Hannah 2014-09-30 10:59:34

回答

3

如果x先前被定義爲4,則會發生這種情況。 Python沒有「選擇定義」這個,你必須擁有。

在您所提供的代碼,你不顯示x是如何定義的,但它肯定已經被定義,否則你會得到一個NameError

>>> abcd_list = {} 
>>> abcd_list.setdefault(x, []) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'x' is not defined 
>>> x=4 
>>> abcd_list.setdefault(x, []) 
[] 
>>> abcd_list 
{4: []} 
+0

不,因爲當我說打印(x)它說x沒有定義@Tim Pietzcker – Hannah 2014-09-30 10:49:30

+0

我沒有像你這樣的錯誤 – Hannah 2014-09-30 10:50:23

+0

@Hannah:你的「 x未定義「,我的」x未定義「錯誤? – 2014-09-30 11:57:40