我使用的是这样的有序信息:
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
循环遍历此对象,则一切正常:
但是,我的问题是: 如果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
循环以与多条目数据对象相同的方式作用于单条目数据对象?在
在第一种情况下,您有一个
OrderedDict
的列表,在第二种情况下,只有一个OrderedDict
。为了让for循环正常工作:它创建一个包含1个元素的
OrderedDict
列表。在在第一个示例中,您使用的是
OrderedDicts
列表,而在第二个示例中,您使用的是单个OrderedDict
对象。在因此,在第一种情况下,
mydata
中的foo
对象都是OrderedDict
对象,您可以使用foo['key']
访问数据,但在第二个示例中,foo
是字典中的一个键,它是一个字符串。在您应该检查在第二种情况下,您是否真的在处理列表而不是单个对象。在
相关问题 更多 >
编程相关推荐