2011-07-05 67 views
8

當使用Python時,dict可能有一個值是一個列表?Python - 可以字典有一個值是一個列表?

例如,一本字典,將如下所示(請參閱KeyName3的值):

{ 
keyName1 : value1, 
keyName2: value2, 
keyName3: {val1, val2, val3} 
} 

我已經知道我可以用「defaultdict」但是單一值(可以理解)返回一個列表。

我問的原因是我的代碼必須是通用的,以便調用者可以將單個鍵值作爲一個項目進行檢索(就像來自字典鍵值一樣)而不是列表(不必指定pop[0]列表) - 但是也可以檢索多個值作爲列表。

如果不是那麼任何suugestions將受到歡迎。

如果有人可以幫忙,那就太好了。

由於事先

保羅

*我使用Python 2.6然而編寫腳本,還必須與Python 3.0+向前兼容。

+0

在這裏閱讀詳細信息:http://docs.python.org/tutorial/datastructures.html#dictionaries並注意如果你是新來的蟒蛇 - 教程是你最好的朋友 –

+2

爲了測試這樣簡單的事情,只需使用python的交互模式。你可以嘗試並找出什麼是允許的,哪些不是。 – tkerwin

+0

@Paul Kernaghan:當你嘗試它時,你觀察到了什麼? –

回答

24

是的。字典中的值可以是任何類型的python對象。鍵可以是任何可哈希對象(不允許列表,但允許元組)。

您需要使用[],不{}創建一個列表:

{ keyName1 : value1, keyName2: value2, keyName3: [val1, val2, val3] } 
+0

Doh!這是完美的。感謝您的幫助,非常感謝。 –

+0

可以使用元組而不是列表的原因是因爲列表是可變的,所以基於它們的「值」的計算不會是冪等的(計算意義上的)。 – Marcin

+0

@geoffspear,酷,但如何通過keyname3和列表值2獲得價值? – Eswemenasja

5

是的,這是可能的:

d = {} 
d["list key"] = [1,2,3] 
print d 

輸出:

{'list key': [1, 2, 3]} 
0

它絕對可以有列表和任何對象作爲值,但字典不能有列表作爲鍵因爲列表是可變的數據結構,並且鍵不能被其他變量使用。

相關問題