我正在将列表合并在一起以创建词典。我在创建字典后调用密钥时遇到了麻烦。
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'
我必须在理解如何阅读密钥列表时做错事,但我无法弄清楚我做错了什么。我是新手,所以它可能非常基本但我在文档中找不到任何澄清的内容。
有什么建议吗?
谢谢!
答案 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'>]