2014-08-28 77 views
0

我有Python中的字典列表(具有單值和多值的鍵)。嘗試處理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] 

我得到以下錯誤「類型錯誤:字符串索引必須是整數,而不是STR」

這是非常混亂!

+0

如果你的詞典列表是一個字符串,然後'i'將是一個單個字符,因此你將不能夠做一個'我[關鍵]' – shaktimaan 2014-08-28 03:42:45

+0

那麼如何我是否修復它?但是我能夠在MAc上的python CLI上將其作爲「str」來完成。這是最奇怪的部分。我將'x'複製到MAC上,類型(x)看起來是字符串。我可以像我想要的那樣迭代它 - 也獲得了正確的值。在centos我有這個問題! – user2921139 2014-08-28 03:44:32

回答

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 
+0

完美Shaktimaan! – user2921139 2014-08-28 04:03:41

+0

顯然也適用於unicode字符串。不只是字符串。 – user2921139 2014-08-28 04:21:12