哈希表的建立:
Hash.new
Hash.new default #这是hash表为空,但是如果使用某个键访问hash表将得到默认值
Hash[ key, value, key, value....]
Hash[key=>value, key=>value....]
{key => value, key => value.....}
访问哈希表
hash[key]
hash.keys
hash.values
hash.values_at key1,key2.... #得到一个value数组 #注意是values
hash.index value
hash.select { |key, value| .....} #得到一个满足条件的key value对数组
hash.each {|key, value| ....}
hash.each_key{ |key|....}
hash.each_value{ |value|....}
哈希表的判定
hash.empty?
hash.has_key?
hash.has_value?
哈希表的修改
hash[key] = value #如果key不存在,则是新增。否则是修改
hash.store("a",1) #=> 1
hash.fetch("a") #=> 1
hash.merge(!) hash1 [block]#hash1会覆盖hash中具有同样key的value block可选,参数为|key,
old_value, new_value|
hash.delete key [block]#会改变hash
hash.delete_if block #block = { |key, value| 某个条件,条件满足则执行delete}
hash.reject (!){ |key, value| condition} #reject!与delete_if相同
hash.clear
hash.replace( new_hash ) #会改变原hash表,这里括号不可少
哈希表的转换
hash.to_a #将hash转换为数组,其中每个元素是一个key, value组成的数组
hash.to_s
hash.to_hash #恩,遗留问题........对于ruby的对象还是不太明白。这个东西使用来创造一个对象的别名。但是赋
值也可以.....Ruby中好像一切相等的东西都有相同的object_id。。。。。
数组转换为Hash
当数组元素为偶数个数的时候:
arr = %w[a b c d] #=> ["a", "b", "c", "d"]
h = Hash[*arr] #=> {"a"=>"b", "c"=>"d"}
Hash的其他操作
排序
可以直接用sort方法,不过会返回一个二维数组。
值得注意的是,当Hash的key是Symbol类型的时候,sort方法会出错。
根据条件选择
h.detect {|k,v| v == "2"} #=> [:b, "2"]
detect和find是别名关系,是Enumerable模块里的方法,Hash类mixin这个模块,所以也可以用。select 方法,
别名是find_all,可以返回多个匹配的k-v对
翻转键值对
h = {:a => 1,:b => 1} #=> {:a=>1, :b=>1}
x = h.invert #=> {1=>:b}
分享到:
相关推荐
解析后的对象可以像操作Ruby哈希表一样进行访问。 ```ruby #!/usr/bin/ruby require 'rubygems' require 'json' require 'pp' json_data = File.read('input.json') obj = JSON.parse(json_data) pp obj ``` 上述...
3. 哈希表:在Ruby中,哈希表是一种重要的数据结构,用于快速查找和存储键值对。在解释器中,哈希表用于实现变量作用域、对象属性、类和模块等。 4. 扫描器和解析器:扫描器的作用是将源代码文本分解成一系列的标记...
用Ruby写的一个网络爬虫,用到了正则表达式 和哈希表
- **第2章**:“Ruby的新特性”,进一步探讨了Ruby作为一门面向对象的语言的特点,并介绍了基本的Ruby语法、数组和哈希表、符号、控制结构、正则表达式、块和迭代器等核心概念。 #### 三、关键知识点详解 ##### 1....
2. **数据类型:** RUBY支持多种数据类型,包括整型、浮点型、字符串、数组、哈希表等。其中,数组和哈希表是使用最频繁的数据结构。 - **数组示例:** ```ruby arr = [1, 2, 3] ``` - **哈希表示例:** ```...
1. **类型与数据结构**:介绍Ruby中的各种基本数据类型,如整型、浮点型、字符串等,并深入讲解数组、哈希表等数据结构的使用方法和内部实现原理。 2. **控制流**:讲解条件语句(if/elsif/else)、循环结构...
- **数组和哈希表**:对于数组和哈希表等基本数据结构,在多线程环境下需要额外的同步措施来确保线程安全性。 - **不可变数据结构**:使用不可变数据结构可以简化多线程编程,因为一旦创建,就不会改变,因此不存在...
迭代器提供了一种方法来遍历集合(如数组或哈希表)中的每个元素,而不需要编写显式的循环语句。Ruby提供了一系列内置的迭代器,如.each、.map、.select等,使集合的处理更为简单。 5. **Ruby on Rails框架**:Ruby...
书中的章节会逐步引导你了解如何声明变量、数据类型(包括字符串、数字、数组和哈希)、控制流(如条件语句和循环)、函数定义以及类和对象的概念。此外,你还会学习到Ruby的模块系统,它是组织代码和实现命名空间的...
- **核心库和工具**:详细介绍了Ruby标准库中的一些重要模块,如数组、哈希表等,并探讨了常用的Ruby工具和环境配置方法。 - **高级主题**:包括元编程、线程、网络编程等内容,适合想要进一步深入了解Ruby的...
本教程涵盖了Ruby的数字处理、字符串操作、数组和哈希表的使用方法,以及条件语句和循环语句的编写,最后还介绍了Ruby在文件和目录操作方面的应用。 适合人群:本资源适合对Ruby编程感兴趣的初学者,以及希望通过...
- **数组与哈希表**:学习如何使用数组和哈希表存储和操作数据。 - **集合操作**:介绍集合的概念及其在 Ruby 中的实现方法。 - **枚举器**:讲解如何使用枚举器(enumerator)来迭代处理集合中的元素。 以上内容...
数据类型包括字符串、数字、布尔值、数组、哈希等。控制结构包括条件语句(如if/else,case)和循环(如for,while,until)。函数是代码的可重用部分,可以定义自己的函数。类是面向对象编程的核心,用于创建对象并...
数据类型:Ruby支持多种数据类型,包括整数(Integer)、浮点数(Float)、字符串(String)、数组(Array)和哈希表(Hash)等。 运算符:Ruby支持常见的算术运算符(如+、-、*、/)、比较运算符(如==、!=、...
7. **符号(Symbol)**:Ruby中的符号是不可变的,它们在内存中只存储一份,适用于作为哈希表的键,提高查找效率。 8. **块和 Proc**:Ruby中的块是代码的另一个形式,可以用`do..end`或者花括号`{}`包裹。Proc对象...
这个gem提供了丰富的API,支持各种Redis命令,如字符串、列表、集合、哈希表的操作,以及发布/订阅、事务、Lua脚本等功能。 在搭建Ruby应用中,若涉及到Redis集群,可以使用`redis-trib.rb`工具进行创建和管理。...
7. **符号(Symbol)**:Ruby 中的符号是不可变的对象,常用于哈希表键,以节省内存。 8. **动态类型**:与Python一样,Ruby 也支持动态类型,变量类型由赋值决定。 至于“源码”和“工具”标签,这可能意味着...