首页 > 解决方案 > Python中的优化问题

问题描述

任务:从用户那里
取一个名为n的整数。从用户那里取n姓名-电话号码输入,然后再取姓名。如果您第二次输入的名称在列表中,则打印名称 = 电话号码相关。否则打印Not found

示例输入:

输入示例

示例输出:

在此处输入图像描述

问题是我写了一个工作代码。但是如果传递给n一个太大的值,代码会花费太多时间来解决它。这是一个具有挑战性的问题,因此我正在处理的网站不接受我的代码并希望我优化代码。我尝试了几种不同的方法来优化它,但是它们都没有解决这个问题。

我的代码:

n = int(input())

d = {}
for x in range(n):
    key_value = input().split()
    d[key_value[0]]= key_value[1]
    
lofnames = []
for name in range(n):
    name = input()
    lofnames.append(name)

for name in lofnames:
    flag = False
    for key in d:
        if key == name:
            print(f"{key}={d[key]}")
            flag = True
    if flag == False:
        print("Not found")

标签: pythonpython-3.xoptimization

解决方案


由于您拥有嵌套循环,您的函数的运行时复杂性看起来不像O(N^2)站点O(N)可能希望的那样。for您可以通过不遍历字典而是将其属性用作O(1)查找时间的哈希表来减少这种复杂性。考虑在字典中为您要查找的键使用一个try-except块来排除s。KeyErrorname


推荐阅读