【发布时间】:2010-04-22 22:41:58
【问题描述】:
对我来说,它们都是相同的,这就是为什么我想知道为什么当我们可以用数组/列表做所有事情时我们有字典数据结构?字典有什么好看的?
【问题讨论】:
标签: arrays dictionary language-features data-structures
对我来说,它们都是相同的,这就是为什么我想知道为什么当我们可以用数组/列表做所有事情时我们有字典数据结构?字典有什么好看的?
【问题讨论】:
标签: arrays dictionary language-features data-structures
Arraylists 只是存储一组对象(可以随机访问)。字典存储成对的对象。当您有一组对象(素数、颜色、学生等)时,这使得数组/列表更适合。字典更适合显示一对对象之间的关系。
为什么我们需要字典?假设您有一些数据需要从一种形式转换为另一种形式,例如将罗马数字字符转换为它们的值。如果没有字典,您必须将这种关联与两个数组一起破解,您首先在第一个列表中找到键所在的位置,然后在第二个列表中访问该位置。这非常容易出错且效率低下,而字典提供了一种更直接的方法。
【讨论】:
混淆在于不同语言的不同命名约定。在我的理解中,Python中所谓的“字典”与PHP中的“关联数组”是一样的。
【讨论】:
数组提供对一组连续数据的随机访问。字典(或关联数组)提供从一组键到一组值的映射。
我相信您是在比较苹果和橙子——它们有两个完全不同的目的,都是有用的数据结构。
大多数情况下,类字典类型被构建为 hash table - 这种类型非常很有用,因为它平均提供非常快速的查找(取决于散列算法的质量) .
【讨论】:
根据 Andrew 所说,在 PHP 和 Javascript 等一些语言中,数组还可以用作字典(称为关联数组)。这也归结为语言中的宽松 v 严格类型。
【讨论】:
理论上你可以用字典做任何事情。 但不要忘记,在某些时候,程序运行在真实的机器上,由于硬件的限制:处理器、内存、存储的性质(磁盘/SSD)......
字典在幕后经常使用Hash table
在某些语言中,您可以在许多不同类型的列表/数组和哈希表之间进行选择,因为这些结构有许多不同的实现,每种都有优点和缺点。
当您处理一系列元素或需要随机访问给定索引(0、1、2、...)处的元素时,请使用 数组
当您有键/值格式并需要通过键快速检索时,请使用字典
如果您想了解更多关于这些的信息,我建议您了解更多关于 data structures 的信息,因为它们是基础
注意:根据语言的不同,这些结构的名称可能会有所不同,并且会造成混淆。
【讨论】: