【发布时间】:2021-08-03 12:02:58
【问题描述】:
我参考了这个页面,但它显示了 Dict.keys() 的 时间复杂度。 https://wiki.python.org/moin/TimeComplexity
此表也显示相同的https://www.geeksforgeeks.org/complexity-cheat-sheet-for-python-operations/
Time complexity for lookup in dictionary.values() lists vs sets
在这种情况下,它会搜索每个键的list,所以它对我没有帮助。
因为在我的例子中,所有 Dict 的值都是一个整数。
Q(1):Dict.values() 是 O(1) 还是 O(n)?
Dict = {1:10,2:20,3:30,4:40}
if 10 in Dict.values():
print("YES")
Q(2):在 python 中是否可以通过提供值来获取键?[如果提供的值在 Dict.values() 中多次出现,我想获取所有对应的键]
Dict = {1:10,2:20,3:30,4:40}
value = 20
我想通过这个值找到 key=2。是否可以使用 O(1),因为在 O(n) 中我必须检查所有键的值!!!
【问题讨论】:
-
我认为您的两个示例都是
O(n),但由于执行延迟,调用本身dict.values()是O(1)。 -
如果你想测试一个值是否存在,并获取与一个值关联的键,那么你的字典是从后到前的。改为
{10: 1, 20: 2, 30: 3, 40: 4}。 -
@RoyCohen 首先你说它是 O(n) 然后你说 Dict.values() 是 O(1) 因为延迟执行[那我应该假设什么? O(1) 还是 O(n)?]
-
@kaya3 是的,这是真的。所以我假设,对我来说答案是否定的。
-
@AayushScet 调用
dict.values()本身是O(1),但是当你使用dict.values()返回的对象时,它通常是O(n)(取决于你在做什么)。
标签: python