from xlrd import open_workbook
book = open_workbook('trial.xls')
sheet=book.sheet_by_index(0)
name_email={}
i=0
for row_index in range(sheet.nrows):
if name_email.has_key(sheet.cell(row_index,i).value):
name_email[str(sheet.cell(row_index,i).value.strip())]=sheet.cell(row_index,i+1).value,)
else:
abc = str(sheet.cell(row_index,i).value.strip())
print repr(abc)
print '"{0}"'.format(repr(abc))
# print name_email[abc]
name_email[str(sheet.cell(row_index,i).value.strip())]=sheet.cell(row_index,i+1).value
i+=1
print name_email.keys()
print name_email
输出是:
“Manoj”
'Manoj'
“Dibyendu”
Dibyendu'
苏拉夫
'Sourav'
[` Dibyendu',Sourav',Manoj']
-=YTET字幕组=-翻译:
但仍然无法通过邮件打印您的名字
Print name \ u email[ABC]
Keyerror Manoj
最佳答案
问题不在于用作索引的变量(这很好,而且可以像预期的那样工作),而在于if条件。
你的代码
if name_email.has_key(sheet.cell(row_index,i).value):
name_email[str(sheet.cell(row_index,i).value)]=(sheet.cell(row_index,i+1).value,)
else:
#print name_email[str(sheet.cell(row_index,i).value)]
abc= str(sheet.cell(row_index,i).value)
print name_email[abc]
当且仅当
name_email[abc]
不包含name_mail
键时(如“else:”语句中所示),尝试打印abc
。好像你想做完全相反的事情-当它有一个键时打印它,当它没有键时添加它,对吧?简单地重新安排你的if条件。现在有点像
if x.has_key(y):
x[y] = 1
else:
print x[y]
尽管它应该是
if x.has_key(y):
print x[y]
else:
x[y] = 1
关于python - 如何从动态键获取python中的字典值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18599434/