Python 如何针对大量输入优化此代码?
如何针对大量输入优化此代码?在5个测试用例中,有3个失败,因为代码执行时间太长Python 如何针对大量输入优化此代码?,python,Python,如何针对大量输入优化此代码?在5个测试用例中,有3个失败,因为代码执行时间太长 n=int(输入()) phonebook=dict([map(str,raw_input().split())表示范围(n)内的x)]) 尽管如此: 尝试: 名称=原始输入() 除EOFError as e外: 打破 如果姓名不在phonebook.keys()中: 打印(“未找到”) 其他: 打印(姓名+“=”+电话簿[姓名]) 这一行可能花了太多时间: 如果姓名不在电话簿中。keys(): 因为您要检查字典中的
n=int(输入())
phonebook=dict([map(str,raw_input().split())表示范围(n)内的x)])
尽管如此:
尝试:
名称=原始输入()
除EOFError as e外:
打破
如果姓名不在phonebook.keys()中:
打印(“未找到”)
其他:
打印(姓名+“=”+电话簿[姓名])
这一行可能花了太多时间:
如果姓名不在电话簿中。keys():
因为您要检查字典中的所有键,并将其与输入进行比较。您可以在关键字中使用,检查键是否直接存在,而无需迭代键
n = int(input())
phonebook=dict([map(str,raw_input().split()) for x in range(n)])
while True:
try:
name = raw_input()
except EOFError as e:
break
if name not in phonebook:
print("Not found")
else:
print(name +"="+phonebook[name])
或者,您可以对关键错误使用异常处理,例如,这是更好的做法:
n = int(input())
phonebook=dict([map(str,raw_input().split()) for x in range(n)])
while True:
try:
name = raw_input()
print(name +"="+phonebook[name])
except EOFError as e:
break
except KeyError as e:
print ("Not found")
您可以将电话簿的按键转换为一组,组的查找速度比列表的最后4行快
print(name +"="+phonebook[name]) if phonebook.get(name) else print("Not found")
作为旁注,如果您正在学习用Python编写代码,那么您应该真正使用Python 3,而不是像这里这样使用Python 2。Python 2自2020年1月起不再受支持。