无法访问字典中的信息

时间:2014-01-27 18:14:12

标签: python dictionary

我正在将列表合并在一起以创建词典。我在创建字典后调用密钥时遇到了麻烦。

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 个答案:

答案 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'>]