如何在OrderedDicts列表中使用Python列表理解获取值

时间:2016-01-24 11:01:34

标签: python python-2.7

我有一个名为catalogue的列表,就像这样:

[OrderedDict([(u'catalogue_id', 240)]), OrderedDict([(u'catalogue_id', 240)])]

我需要从上面创建ID的新列表。这就是我的尝试:

x = [x.catalogue_id for x in catalogue]

但我收到错误:

'OrderedDict' object has no attribute 'catalogue_id'. 

我认为这是因为它是一个dicts列表,如何做到这一点?

2 个答案:

答案 0 :(得分:3)

Ordered Dictionaries 是字典的子类,因此在访问元素时它们的行为就像普通字典一样。对x['catalogue_id']中的每个元素使用密钥访问catalogue来访问值:

from collections import OrderedDict

catalogue = [OrderedDict([(u'catalogue_id', 240)]), OrderedDict([(u'catalogue_id', 240)])]

x = [x['catalogue_id'] for x in catalogue]

print(x) # [240, 240]

注意:您可能会将 namedtuples 混淆,因为 this table 支持点.访问其元素。

答案 1 :(得分:1)

您使用__getitem__而不是__getattribute__访问字典的内容,即您需要使用括号表示法而不是点符号。

>>> a=[OrderedDict([(u'catalogue_id', 240)]), OrderedDict([(u'catalogue_id', 240)])]
>>> [d['catalogue_id'] for d in a]
[240, 240]