![]() |
1
7
我认为你混淆了插入字典和字典键哈希计算的复杂性。
你写的
(正如评论中指出的那样,一个例外是如果 capacity of the dictionary increases ,则必须重新分配内部数组,插入操作变为O(n)操作。) |
![]() |
2
3
不必。它不必与现有密钥进行比较。如果它必须查看关键字,插入不可能是O(1),因为时间会随着关键字数量的增加而增加(不是O(N),因为它可以使用更有效的搜索算法,但也不是O(1”))。 相反,哈希值还决定了字典中的特定存储位置,因此字典可以直接将元素值设置在正确的位置,而无需检查其他哈希值 * ,因此保持O(1)插入。如果此位置已经存储了一个现有元素,则根据您的平台/实现,它将覆盖或抛出异常(C#将 throw an ArgumentException )
谈论哈希码计算。从字典的角度来看,这无关紧要。字典只看到并引用哈希。计算生成哈希的时间不是工作,根据类型的不同,哈希也可能是O(1),或者可能更糟糕。字符串确实需要检查字符,哈希计算将为O(n),但字典可以 假设哈希 . 字典只关注随着字典中元素数量的增加而增加的复杂性,其中元素是字符串作为单个单元,而不是单个字符。单个元素的复杂性取决于它们的类型,词典可以使用 任何东西 作为一个键,而不仅仅是一个字符串,如果字典插入时间是对话的一部分,那么试图谈论字典插入时间将是愚蠢的,因为我们总是必须回到可以想象到的最糟糕的类型。 *字典类型有 时间效率高 ,但有时空间 效率低下的 …但只针对引用,而不是整个对象,而且由于数学没有你想象的那么多。 |
![]() |
eymentakak · json字典类型错误:字符串索引必须是整数 2 年前 |
![]() |
Rohan Mittal · 按dict值对dict排序 2 年前 |
![]() |
mars · 将值作为元组对字典进行排序 2 年前 |
![]() |
Sher Meen · 我需要列出一个循环中临时变量中存储的多个值 2 年前 |
![]() |
Shubh · 如何将字典行附加到空数据帧中? 2 年前 |
![]() |
kms · 从pandas中的字典中读取数据并指定新的列值 2 年前 |
![]() |
Alex · 如何向嵌套字典json添加值? 2 年前 |