我有点困惑在使用字典时,搜索元素应该使用“in”还是“get”。
根据这个时间复杂度表格,此处:使用“in”会得到O(n),而使用“get”会得到O(1)。
下面这两个代码片段实现了相同的功能,但显然使用“get”会更快?
根据这个时间复杂度表格,此处:使用“in”会得到O(n),而使用“get”会得到O(1)。
下面这两个代码片段实现了相同的功能,但显然使用“get”会更快?
#Recall that for "get" the second parameter is returned if key is not found
#O(1) time complexity
if dict.get(key, False):
return "found item"
#O(n) time complexity
if key in dict:
return "found item"
我不理解使用get会如何改变时间复杂度,因为它们都可以实现相同的功能。除非找到值,否则get调用实际上将返回该值。
问题: 为什么“in”时间复杂度是O(n),而“get”只有O(1),当它们都可以实现相同的结果?如果这是真的,是否有理由在字典中使用“in”?
in
的时间复杂度。 - user2357112in
和get()
都是期望时间复杂度为O(1)
的操作,但最坏情况下的时间复杂度是O(len(dict))
。在检查一个元素是否属于字典时,使用in
是显而易见的选择。dict.get(key, False)
不正确(例如,假设键为 0 或其他类似于 "false" 的值)。 - Tim Peters