尝试在python中处理字典列表时出错
我有一个Python字典列表(包含单值和多值的键) 显然,数据是unicode格式的,这是我面临的问题尝试在python中处理字典列表时出错,python,list,dictionary,unicode,encode,Python,List,Dictionary,Unicode,Encode,我有一个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" 但当我这么做
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:字符串索引必须是整数,而不是str”
这很令人困惑 如果您的词典列表是您在问题中提到的字符串,则使用
ast
modules'literal\u eval()
将其转换为词典列表。然后可以访问字典中的键和值
演示:
导入ast
>>>data=“[{'a':'b'},{'a':'d'},{'a':'f'}”
>>>类型(数据)
>>>目录列表=ast.literal评估(数据)
>>>类型(目录列表)
>>>键='a'
>>>对于目录列表中的i:
... 打印i[键]
...
B
D
F
如果您的词典列表是一个字符串,那么
i
将是一个单个字符,因此您将无法执行i[key]
那么如何修复它呢?。不过,我还是能够在MAc上的python CLI上以“str”的形式完成它。这是最奇怪的部分。我将“x”复制到MAC上,类型(x)似乎是字符串。我可以像我想的那样迭代它-也得到了正确的值。在centOS,我有这个问题!
>>> 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