2013-07-21 28 views
2

當我試圖理解Python字典時,我比較了兩個程序的輸出。我不明白爲什麼產量不同。我不懂字典

兩個方案開始

data = { 
     'key1': 'value1', 
     'key2': 'value2', 
     'key3': 'value3' 
     } 

第一個程序:

for keys in data.items(): 
    print keys 

第二套方案:

for keys, values in data.items(): 
    print keys, values 

輸出是

('key3', 'value3') 
('key2', 'value2') 
('key1', 'value1') 

key3 value3 
key2 value2 
key1 value1 

爲什麼第一輸出秀parenthesised字符串?

爲什麼第二個輸出不顯示逗號?

回答

7

dict.items返回(key,value)的2元組序列。

第一個示例中發生的情況是,您正在從那個時候獲取單個元素,在這種情況下是整個元組(鍵,值)。當您使用for key, value in時,Python會執行「解包」,這意味着它將該元組的第一個元素指定爲鍵,將下一個元素指定爲值,以便可以將它們作爲單獨的變量進行訪問。

當您打印的,Python的打印一個元組(你的第一個例子),作爲(1, 2),但是當它解開,則在打印兩個獨立的變量,它打印隨後在之間的空間數量2人數1

6

dict.items返回鍵值對的元組列表。如果for中只有一個名稱,則它將該元組分配給該名稱。有了兩個名字,它將分別解開關鍵字和名字的價值。參見:

>>> a, b = (1, 2) 
>>> a 
1 
>>> b 
2 
>>> a = (1, 2) 
>>> a 
(1, 2) 
>>>