【问题标题】:Error while trying to process a list of dictionaries in python尝试在python中处理字典列表时出错
【发布时间】:2014-08-28 03:40:47
【问题描述】:

我在 Python 中有一个字典列表(包含单个值和多个值的键)。

显然,数据是 unicode 格式,这是我面临的问题。

x = "..." my list of dictionaries  #printing type(x) gave me "unicode"

我希望能够做到

for i in x:
    print i[key]

我猜这对于 unicode 来说似乎并不简单。所以我做到了,

r = x.encode('utf8') # printing type(r) gave me "str"

但是当我这样做时

 for i in r: #r here is in str format
        print i[key]

我收到以下错误“TypeError: string indices must be integers, not str”

这很混乱!

【问题讨论】:

  • 如果您的字典列表是一个字符串,那么 i 将是一个字符,因此您将无法执行 i[key]
  • 那么我该如何解决呢?不过,我能够在 MAC 上的 python CLI 上将其作为“str”来完成。这是最奇怪的部分。我将“x”复制到 MAC 上,类型(x)似乎是字符串。我可以像我想要的那样迭代它——也得到了正确的值。在 centOS 上我有这个问题!

标签: python list dictionary unicode encode


【解决方案1】:

如果您的字典列表是问题中提到的字符串,则使用ast 模块的literal_eval() 将其转换为字典列表。然后您可以访问字典中的键和值。

演示:

>>> import ast
>>> data = "[{'a':'b'}, {'a':'d'}, {'a':'f'}]"

>>> type(data)
<type 'str'>

>>> list_of_dicts = ast.literal_eval(data)
>>> type(list_of_dicts)
<type 'list'>

>>> key = 'a'
>>> for i in list_of_dicts:
...     print i[key]
...
b
d
f

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 2020-06-23
    • 1970-01-01
    • 2023-01-14
    • 2016-05-10
    • 1970-01-01
    • 2013-01-21
    相关资源
    最近更新 更多