我有一个名为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列表,如何做到这一点?
答案 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]