2010-09-27 58 views
2

我是Python新手,正在閱讀2009年出版的一本書,因此使用Python 2.5語法。它具有以下功能:這是一個較老的Python版本的字典嗎?

_fields_ = [ 
    ("cb", DWORD), 
    ("lpReserved", LPTSTR), 
    ... 
] 

對我來說,它看起來像一個元組列表,但在同一時間,感覺就像一個地圖/字典。這是舊的語法嗎?

+0

值得注意的是,'dict(_fields)'會返回以明顯方式構建的字典。 – aaronasterling 2010-09-27 01:50:10

+2

如果你把它變成字典,你會失去元組列表中的排序,這可能很重要。 (Python在3.2中使用'collections.OrderedDict'獲取標準化的有序地圖數據類型。 – bobince 2010-09-27 01:54:13

+0

@bobince:很好的提及字典無序的細節。 'collections.OrderedDict'也在python 2.7中。 – intuited 2010-09-27 04:05:44

回答

6

這是完美的,當前的語法,並表示對(兩項元組)的列表。如果你需要一個字典(並沒有重複鍵的問題;-),dict(_fields_)會讓你一個(很像somedict.items()讓你從一個字典對 - list(somedict.items())列表,如果你在Python 3,但堅持得到一個列表而不只是一個視圖/迭代器,順便說一句;-)。

4

不,這總是一個元組列表。這看起來像ctypes的數據類型「映射」,但它只是一個列表,而不是一個真正的地圖。

3

不,這只是一個元組列表。 Python中的字典一直使用{}表示法。