Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/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,如何针对大量输入优化此代码?在5个测试用例中,有3个失败,因为代码执行时间太长 n=int(输入()) phonebook=dict([map(str,raw_input().split())表示范围(n)内的x)]) 尽管如此: 尝试: 名称=原始输入() 除EOFError as e外: 打破 如果姓名不在phonebook.keys()中: 打印(“未找到”) 其他: 打印(姓名+“=”+电话簿[姓名]) 这一行可能花了太多时间: 如果姓名不在电话簿中。keys(): 因为您要检查字典中的

如何针对大量输入优化此代码?在5个测试用例中,有3个失败,因为代码执行时间太长

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月起不再受支持。