如何在Python for循环中使用一个条目处理OrderedDict?

2024-09-24 16:32:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是这样的有序信息:

my_data = [OrderedDict([(u'@pageid', u'1108'), (u'@ns', u'0'), (u'@title', u'H\xf6rspiele f\xfcr Studenten')]), OrderedDict([(u'@pageid', u'989'), (u'@ns', u'0'), (u'@title', u'Impact')]), OrderedDict([(u'@pageid', u'580'), (u'@ns', u'0'), (u'@title', u'Impfgegner')]), OrderedDict([(u'@pageid', u'990'), (u'@ns', u'0'), (u'@title', u'MESH')]), OrderedDict([(u'@pageid', u'502'), (u'@ns', u'0'), (u'@title', u'Publikationen')])]

如果我使用for循环遍历此对象,则一切正常:

^{pr2}$

但是,我的问题是: 如果OrderedDict只包含一个条目,例如:

OrderedDict([(u'@pageid', u'328'), (u'@ns', u'0'), (u'@title', u'UWE')])

我的for循环将失败:

for foo in mydata:
print(foo['@pageid'])

TypeError: string indices must be integers

…因为for循环不再给出foo和几个['ATTRIBUTE'],而是将所有attribute-名称写入varfoo。在

我该怎么做才能使for循环以与多条目数据对象相同的方式作用于单条目数据对象?在


Tags: 数据对象信息fordatafootitlemy
2条回答

在第一种情况下,您有一个OrderedDict的列表,在第二种情况下,只有一个OrderedDict。为了让for循环正常工作:

 my_data = [OrderedDict([(u'@pageid', u'328'), (u'@ns', u'0'), (u'@title', u'UWE')])]

它创建一个包含1个元素的OrderedDict列表。在

在第一个示例中,您使用的是OrderedDicts列表,而在第二个示例中,您使用的是单个OrderedDict对象。在

因此,在第一种情况下,mydata中的foo对象都是OrderedDict对象,您可以使用foo['key']访问数据,但在第二个示例中,foo是字典中的一个键,它是一个字符串。在

您应该检查在第二种情况下,您是否真的在处理列表而不是单个对象。在

相关问题 更多 >