这是旧Python版本中的词典吗?

这是旧Python版本中的词典吗?,python,Python,我是Python新手,正在读一本2009年出版的书,书中使用了Python 2.5语法。它做了以下工作: _fields_ = [ ("cb", DWORD), ("lpReserved", LPTSTR), ... ] 对我来说,它看起来像一个元组列表,但同时它感觉像一个地图/字典。这是旧语法吗?不,这总是一个元组列表。对于ctypes来说,这看起来像一个数据类型“映射”,但它只是一个列表,而不是一个真正的映射。不,这只是一个元组列表。Python中的字典总是使用{}

我是Python新手,正在读一本2009年出版的书,书中使用了Python 2.5语法。它做了以下工作:

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

对我来说,它看起来像一个元组列表,但同时它感觉像一个地图/字典。这是旧语法吗?

不,这总是一个元组列表。对于ctypes来说,这看起来像一个数据类型“映射”,但它只是一个列表,而不是一个真正的映射。

不,这只是一个元组列表。Python中的字典总是使用
{}
表示法。

它非常好,是当前语法,并且表示成对列表(两项元组)。如果您需要dict(并且没有重复键的问题;-),
dict(_fields)
将为您创建一个dict(很像
somedict.items()
从dict中创建一个对列表--
列表(somedict.items())
如果您使用的是Python 3,请坚持获取一个列表,而不仅仅是一个视图/迭代器,顺便说一句;-).

值得注意的是,
dict(_字段)
将返回以明显方式构造的字典。如果将其转换为dict,则会丢失元组列表版本中的顺序,这可能非常重要。(Python在3.2中获得了一个标准化的有序映射数据类型,带有
collections.OrderedDict
)@bobince:很高兴提到字典的无序细节
collections.OrderedDict
也在python 2.7中。