【问题标题】:How to get the index of a key in a hash?如何获取哈希中键的索引?
【发布时间】:2019-03-27 02:33:21
【问题描述】:

我正在尝试获取哈希中键的索引。

我知道如何在数组中做到这一点:

arr = ['Done', 13, 0.4, true]

a = arr.index('Done')

puts a

是否有一种方法或某种方式可以使用哈希中的键来执行此操作?谢谢!

【问题讨论】:

  • 您能否提供一个包含哈希和预期结果的示例?
  • 顺便说一句,你的用例是什么?你为什么对键的index感兴趣?我想不出它有什么实际用途:-)
  • @Stephan 我在写一个开源的渗透测试工具,需要把数据整理得井井有条。

标签: ruby


【解决方案1】:

哈希通常不被视为有序结构,它们只是具有与这些键对应的键和值的列表。

确实,在 Ruby 中,哈希在技术上是有序的,但很少有实际用例将它们这样处理。

如果你想做的是在哈希中找到一个value对应的key,你可以简单地使用Hash#key方法:

hash = { a: 1, b: 2 }
hash.key(1) # => :a

我想你可以使用hash.keys.index(hash.key(1)) 来获取0,因为它是第一个值,但我不建议这样做,因为它不是数据结构的典型用法

【讨论】:

    【解决方案2】:

    至少有几种方法可以获得这些信息,想到的 2 种是 Enumerable 的 find_index 方法,用于将每个元素传递给块并检查您的密钥:

    hash.find_index { |key, _| key == 'Done' }
    

    或者你可以从你的哈希中获取所有keys作为一个数组,然后像你一直在做的那样查找索引:

    hash.keys.index('Done')
    

    【讨论】:

      猜你喜欢
      • 2014-01-30
      • 2014-05-18
      • 2018-08-29
      • 2021-12-30
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      • 2010-12-19
      • 2015-02-05
      相关资源
      最近更新 更多