我正在使用这样的 OrderedDict:
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
循环遍历这个对象,一切都会按预期工作:
for foo in mydata:
print(foo['@pageid'])
print(foo['@ptitle'])
但是,我的问题是: 如果 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 循环不再给出带有多个 ['ATTRIBUTE']
的 foo
,而是写入所有 attribute
-var foo
中的名称。
我该怎么做才能使 for
循环以与多条目数据对象相同的方式处理单条目数据对象?
最佳答案
在第一个示例中,您使用的是 OrderedDicts
列表,而在第二个示例中,您使用的是单个 OrderedDict
对象。
因此,在第一种情况下,mydata
中的每个 foo
对象都是 OrderedDict
对象,您可以使用 访问您的数据>foo['key']
,但在第二个示例中,foo
是字典中的键,它是一个字符串。
您应该检查在第二种情况下您是否真正处理的是列表而不是单个对象。
关于python - 如何在Python for循环中使用一个条目来处理OrderedDict?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38210025/