python - 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")
解决方案
由于您拥有嵌套循环,您的函数的运行时复杂性看起来不像O(N^2)
站点O(N)
可能希望的那样。for
您可以通过不遍历字典而是将其属性用作O(1)
查找时间的哈希表来减少这种复杂性。考虑在字典中为您要查找的键使用一个try-except
块来排除s。KeyError
name
推荐阅读
- google-sheets - 如何使用 app google app 脚本显示其他表中的几个列以加入主表?
- python - 使用 python 访问 Wordpress 数据库
- php - 如何在 laravel 中的 DB::raw() 中添加 where
- c# - Xamarin 表单将数据传递到选项卡式页面
- android - 如何在 Android 中覆盖 UI 元素
- javascript - 似乎无法弄清楚如何正确删除子节点
- swift - 检测关于容器视图的 UIView 中心位置 - Swift - 以编程方式
- python - Keras 自定义损失函数 huber
- logging - 如何在生产日志中查看 SQL 参数值?
- azure-cosmosdb - 这是 Azure Cosmos DB 中的错误分区键方案吗?