Ben*_*nIO 13 ruby python dictionary hashmap
在Python中,有字典:
residents = {'Puffin' : 104, 'Sloth' : 105, 'Burmese Python' : 106}
Run Code Online (Sandbox Code Playgroud)
在Ruby中,有哈希:
residents = {'Puffin' => 104, 'Sloth' => 105, 'Burmese Python' => 106}
Run Code Online (Sandbox Code Playgroud)
唯一的区别是:
对比=>
语法.(注意,如果示例使用变量而不是字符串,那么就没有语法差异.)
在Python中,您可以通过键调用字典的值:
residents['Puffin']
# => 104
Run Code Online (Sandbox Code Playgroud)
在Ruby中,您还可以通过键获取Hash的值:
residents['Puffin']
# => 104
Run Code Online (Sandbox Code Playgroud)
它们看起来是一样的.
Ruby中的Hash和Python中的字典有什么区别?
use*_*740 14
这两个Ruby的哈希和Python的字典代表一个地图抽象数据类型(ADT)
..关联数组,映射,符号表或字典是由(键,值)对的集合组成的抽象数据类型,这样每个可能的键在集合中最多出现一次.
此外,Hash和字典都是作为哈希表实现的,这些哈希表要求密钥是可清除且可等同的.一般来说,哈希表上的插入和删除以及获取操作是O(1)摊销或"快速,独立于散列/字典大小".
[哈希表]是用于实现关联数组的数据结构,关联数组可以将键映射到值.哈希表使用哈希函数来计算桶或槽阵列的索引,从中可以找到正确的值.
(使用Trees的地图实现,而不是哈希表,可以在持久化和函数式编程上下文中找到.)
当然,Ruby和Python设计选择以及提供的特定/默认Map实现之间也存在差异:
nil
in Hash
,1中的异常dict
Hash
(自Ruby 2.0起),不保证dict
(直到Python 3.6)1 Hash
仅1Hash
仅2该[]
语法的支持是常见的,只要这两种语言提供了一个重载索引运算符语法糖,但实现方式不同的下方,并且在丢失钥匙的情况下,不同的语义.
1 Python提供defaultdict
和OrderedDict
实现,它们具有与标准不同的行为/功能dict
.这些实现允许默认值生成器,缺失键处理以及标准dict
类型中找不到的其他排序保证.
2 Python中的某些核心类型(例如.list
和dict
)明确拒绝可散列,因此它们不能用作基于散列的字典中的键.这并不是严格意义上的差异,dict
人们仍然可以使用可变的自定义类型作为键,尽管在大多数情况下不鼓励这样做.
它们(Python中的字典,Ruby中的哈希)对于所有实际用途都是相同的,并且实现了一般Dictionary / Hashtable
(键值存储),您通常在给定唯一键的情况下存储条目,并快速查找它的值.
现在ruby还支持以下sysntax:
residents = {'Puffin': 104, 'Sloth': 105, 'Burmese Python': 106}
Run Code Online (Sandbox Code Playgroud)
但是我们应该用符号表示法访问值:
residents[:Puffin]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5322 次 |
最近记录: |