我的功能是:
def searchstock():
dictionary=calcreturn(dictionize(tickers(openfile()),pairslist()))
inp=raw_input("What is the stock ticker? ")
while True:
try:
dictionary[inp]
break
except KeyError:
print("Ticker not found. Please input again ")
print(inp, dictionary[inp])
try / except不起作用。我正在尝试查看用户输入是否在字典键中,然后返回键和相应的值
如果imp不在字典中,为什么这是一个无限循环?
答案 0 :(得分:2)
刚
inp=raw_input("What is the stock ticker? ")
try:
dictionary[inp]
break; #exit loop
except KeyError:
print "Nope!"
您还需要突破while True
循环
如果您使用的是py2x,则需要使用raw_input
代替input
答案 1 :(得分:0)
代码中的listkeys是列表而不是字典。在列表中查找元素不会给您一个KeyError。
如果您使用的是列表,
item in list_name
将给出True或False。
同时修改raw_input()的输入,使其将字符串视为字符串而不是对象名称。
尝试使用以下内容:
try:
dictionary_name[key]
except KeyError:
#do something
print "Key Error"
答案 2 :(得分:-1)
也许我在这里误解了一些东西,但要检查一个值是否是字典键,这很简单:
'key' in dictionary
返回True
或False
。
此外,您甚至可以执行以下操作:
mydictionary.get('key', 'Key not in dictionary')
如果密钥不在字典中,您将获得字符串"Key not in dictionary"
,否则您将获得由'key'
标记的实际值。