Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从动态键获取python中的字典值_Python - Fatal编程技术网

如何从动态键获取python中的字典值

如何从动态键获取python中的字典值,python,Python,结果是: “manoj” “‘manoj’” “迪比恩杜” “迪比恩杜” “苏拉夫” “苏拉夫” ['dibyendu','sourav','manoj'] {'dibyendu':(你会的。b@gmail.com","苏拉夫":(美国)。b@gmail.com’,),‘manoj’:(嗯。c@gmail.com“,)} 但是仍然无法访问打印名称\u电子邮件[abc]抛出错误 打印姓名\u电子邮件[abc] KeyError:“manoj”它的工作原理与您所想的一样: from xlrd imp

结果是: “manoj” “‘manoj’” “迪比恩杜” “迪比恩杜” “苏拉夫” “苏拉夫” ['dibyendu','sourav','manoj'] {'dibyendu':(你会的。b@gmail.com","苏拉夫":(美国)。b@gmail.com’,),‘manoj’:(嗯。c@gmail.com“,)}

但是仍然无法访问打印名称\u电子邮件[abc]抛出错误 打印姓名\u电子邮件[abc]
KeyError:“manoj”

它的工作原理与您所想的一样:

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

如果在硬编码键时,变量abc显然不包含您认为它是的内容。

问题不在于用作索引的变量(这很好,可以预期),而在于您的if条件

你的代码

>>> mydict = {"spam": "flat", "eggs": "round"}
>>> print mydict["eggs"]
round
>>> mykey = "eggs"
>>> print mydict[mykey]
round
>>>
当且仅当
name\u-mail
不包含
abc
键时,才尝试打印
name\u-email[abc]
sstatement。似乎您想做的恰恰相反-当有键时打印,当没有键时添加,对吗?只需重新安排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]
虽然它应该是

if x.has_key(y):
    x[y] = 1
else:
    print x[y]

可能有前导或尾随空格,请尝试
abc=str(sheet.cell(row_index,i).value.strip())
。如果仍然不起作用,请添加
print repr(abc)
,然后再尝试访问字典并用输出编辑问题。
repr(abc)
打印什么?什么是
print name\u email.keys()
告诉你在字典里吗?更好的是,
打印“{0}”。格式(repr(abc))
我已经修改了代码并打印了与你要求的相同的内容。请让我知道。完美它有完美的意义,我写了愚蠢的逻辑。谢谢@lejlot很高兴我能提供帮助。记住为你的问题标记正确的答案。
if x.has_key(y):
    print x[y]
else:
    x[y] = 1