`
qzriso
  • 浏览: 242362 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

Ruby哈希表

阅读更多

哈希表的建立:
   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来处理JSON的简单教程

    解析后的对象可以像操作Ruby哈希表一样进行访问。 ```ruby #!/usr/bin/ruby require 'rubygems' require 'json' require 'pp' json_data = File.read('input.json') obj = JSON.parse(json_data) pp obj ``` 上述...

    Ruby黑客指南(Minero Aoki)Ruby Hacking Guide (Minero Aoki)

    3. 哈希表:在Ruby中,哈希表是一种重要的数据结构,用于快速查找和存储键值对。在解释器中,哈希表用于实现变量作用域、对象属性、类和模块等。 4. 扫描器和解析器:扫描器的作用是将源代码文本分解成一系列的标记...

    用Ruby写的一个网络爬虫

    用Ruby写的一个网络爬虫,用到了正则表达式 和哈希表

    Programming Ruby 1.9 3rd edition

    - **第2章**:“Ruby的新特性”,进一步探讨了Ruby作为一门面向对象的语言的特点,并介绍了基本的Ruby语法、数组和哈希表、符号、控制结构、正则表达式、块和迭代器等核心概念。 #### 三、关键知识点详解 ##### 1....

    RUBY 教程.doc

    2. **数据类型:** RUBY支持多种数据类型,包括整型、浮点型、字符串、数组、哈希表等。其中,数组和哈希表是使用最频繁的数据结构。 - **数组示例:** ```ruby arr = [1, 2, 3] ``` - **哈希表示例:** ```...

    Ruby 编程语言的书籍

    1. **类型与数据结构**:介绍Ruby中的各种基本数据类型,如整型、浮点型、字符串等,并深入讲解数组、哈希表等数据结构的使用方法和内部实现原理。 2. **控制流**:讲解条件语句(if/elsif/else)、循环结构...

    Working with Ruby Threads

    - **数组和哈希表**:对于数组和哈希表等基本数据结构,在多线程环境下需要额外的同步措施来确保线程安全性。 - **不可变数据结构**:使用不可变数据结构可以简化多线程编程,因为一旦创建,就不会改变,因此不存在...

    Ruby脚本语言经典教程.pdf

    迭代器提供了一种方法来遍历集合(如数组或哈希表)中的每个元素,而不需要编写显式的循环语句。Ruby提供了一系列内置的迭代器,如.each、.map、.select等,使集合的处理更为简单。 5. **Ruby on Rails框架**:Ruby...

    笨办法学ruby_笨办法学ruby_ruby_bravevk4_

    书中的章节会逐步引导你了解如何声明变量、数据类型(包括字符串、数字、数组和哈希)、控制流(如条件语句和循环)、函数定义以及类和对象的概念。此外,你还会学习到Ruby的模块系统,它是组织代码和实现命名空间的...

    Ruby编程,Ruby编程,

    - **核心库和工具**:详细介绍了Ruby标准库中的一些重要模块,如数组、哈希表等,并探讨了常用的Ruby工具和环境配置方法。 - **高级主题**:包括元编程、线程、网络编程等内容,适合想要进一步深入了解Ruby的...

    ruby语言基础教程.ppt

    本教程涵盖了Ruby的数字处理、字符串操作、数组和哈希表的使用方法,以及条件语句和循环语句的编写,最后还介绍了Ruby在文件和目录操作方面的应用。 适合人群:本资源适合对Ruby编程感兴趣的初学者,以及希望通过...

    Ruby - Ruby for Rails

    - **数组与哈希表**:学习如何使用数组和哈希表存储和操作数据。 - **集合操作**:介绍集合的概念及其在 Ruby 中的实现方法。 - **枚举器**:讲解如何使用枚举器(enumerator)来迭代处理集合中的元素。 以上内容...

    ruby中文教程,从基础到深入的让你学习ruby

    数据类型包括字符串、数字、布尔值、数组、哈希等。控制结构包括条件语句(如if/else,case)和循环(如for,while,until)。函数是代码的可重用部分,可以定义自己的函数。类是面向对象编程的核心,用于创建对象并...

    Ruby语言介绍.doc

    数据类型:Ruby支持多种数据类型,包括整数(Integer)、浮点数(Float)、字符串(String)、数组(Array)和哈希表(Hash)等。 运算符:Ruby支持常见的算术运算符(如+、-、*、/)、比较运算符(如==、!=、...

    ruby入门练习题.zip

    7. **符号(Symbol)**:Ruby中的符号是不可变的,它们在内存中只存储一份,适用于作为哈希表的键,提高查找效率。 8. **块和 Proc**:Ruby中的块是代码的另一个形式,可以用`do..end`或者花括号`{}`包裹。Proc对象...

    ruby-2.7.0.tar.gz

    这个gem提供了丰富的API,支持各种Redis命令,如字符串、列表、集合、哈希表的操作,以及发布/订阅、事务、Lua脚本等功能。 在搭建Ruby应用中,若涉及到Redis集群,可以使用`redis-trib.rb`工具进行创建和管理。...

    Python & Ruby 学习

    7. **符号(Symbol)**:Ruby 中的符号是不可变的对象,常用于哈希表键,以节省内存。 8. **动态类型**:与Python一样,Ruby 也支持动态类型,变量类型由赋值决定。 至于“源码”和“工具”标签,这可能意味着...

Global site tag (gtag.js) - Google Analytics