2014-01-27 67 views
0

我正在將列表合併在一起以創建字典。雖然在創建字典後調用密鑰,但我遇到了麻煩。無法從字典中訪問信息

import xlrd 

from xlrd import open_workbook 
book = open_workbook('inputme.xlsx') 
sheet0 = book.sheet_by_index(0) 


sociallab= sheet0.row(0) 
socialrank= sheet0.row(1) 
OCDlab= sheet0.row(2) 
OCDrank= sheet0.row(3) 
BDDlab=sheet0.row(4) 
BDDrank= sheet0.row(5) 
EDlab= sheet0.row(4) 
EDrank= sheet0.row(5) 

social = dict(zip(socialrank,sociallab)) 
OCD = dict(zip(OCDrank, OCDlab)) 
BDD = dict(zip(BDDrank, BDDlab)) 
ED = dict(zip(EDrank, EDlab)) 

print(ED.keys()) 
ed1 = ED["number:1.0"] 
print(ed1) 

當我運行此我得到:

dict_keys([number:3.0, number:4.0, number:8.0, number:7.0, number:5.0, number:1.0, number:2.0, number:6.0]) 
Traceback (most recent call last): 
    File "C:\Users\Lee\Dropbox\Python\ME.py", line 28, in <module> 
    ed1 = ED["number:1.0"] 
KeyError: 'number:1.0' 

我必須做一些錯誤的理解如何讀取密鑰列表,但我無法找出什麼我做錯了。我是新來的,所以它可能是非常基本的,但我找不到任何澄清的文檔。

有什麼建議嗎?

謝謝!

回答

1

由於表示提示(因爲值周圍沒有任何引號),所以鍵實際上並不是字符串。

dict_keys([number:3.0, number:4.0, number:8.0, number:7.0, number:5.0, number:1.0, number:2.0, number:6.0]) 

如果print(list(map(type, ED))),你可能會看到很多的<class 'xlrd.sheet.Cell'>引用。您或許可以使用.row_values()。比較(使用我手邊的一些數據):

>>> print(sheet0.row(6)[:4]) 
[text:u'  Specialists', empty:'', number:585.0, number:123.0] 
>>> print(list(map(type, sheet0.row(6)[:4]))) 
[<class 'xlrd.sheet.Cell'>, <class 'xlrd.sheet.Cell'>, <class 'xlrd.sheet.Cell'>, <class 'xlrd.sheet.Cell'>] 
>>> print(sheet0.row_values(6)[:4]) 
[u'  Specialists', '', 585.0, 123.0] 
>>> print(list(map(type, sheet0.row_values(6)[:4]))) 
[<type 'unicode'>, <type 'str'>, <type 'float'>, <type 'float'>] 
+0

謝謝! row_values修復了它 – Lee