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

标签 python arrays python-2.7 for-loop

我正在使用这样的 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/

相关文章:

android - Windows 7上的Kivy开发环境

python - 在构建 Python PyMQI 1.2 时,如何强制使用我的 GCC 编译器?

python - 如何在 Python 中使用 numpy 将一个数组的值替换为另一个数组

python-2.7 - Kerberos 安装后 Python Impyla 失败

javascript - 过滤合并两个数组,匹配两个字段/列 : Javascript

JavaScript:动态创建数组

multithreading - 2.7转换后Mapreduce不再起作用

python - TruncDay 无法在 Django+MySQL5.5 中工作

python - 嵌套字典 python 中唯一值的计数

Python:替换文件中以模式开头的行