在rails

时间:2016-06-30 06:50:27

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

是否有哈希值?

我有一个类似下面的哈希,我试图采用以下命令。我知道它可以用不同的方式完成。但是我不知道如果采用以下的方法:

hash = {"0"=>{"user_id"=>"1"}, "0"=>{"user_id"=>"2"}}
hash.pluck("user_id")

4 个答案:

答案 0 :(得分:2)

你能做的最好就是一个简单的map

hash = {"0"=>{"user_id"=>"1"}, "1"=>{"user_id"=>"2"}}
hash.values.map{|h| h['user_id']} # => ["1", "2"]

如果需要,您甚至可以将其作为Array方法添加到pluck。当然,“你可以”并不意味着“你应该”:)

答案 1 :(得分:0)

这应该有效

from Bio import Entrez

Entrez.email = "Your.Name.Here@example.org"
handle = Entrez.elink(db="pubmed", id="26998445", cmd="neighbor_score", rettype="xml")
records = Entrez.read(handle)

scores = sorted(records[0]['LinkSetDb'][0]['Link'], key=lambda k: int(k['Score']))
#show the top 5 results
for i in range(1, 6):
    handle = Entrez.efetch(db="pubmed", id=scores[-i]['Id'], rettype="xml")
    record = Entrez.read(handle)
    print(record)

结果如下

hash.inject([]) do |acc, el| 
  acc << el.last.try(:[], 'user_id').to_i
  acc
end

但它只适用于您提供的哈希值。

或者你可以使用:

来修补Hash类
[38] pry(main)> hash.inject([]){|acc, el| acc << el.last.try(:[], 'user_id').to_i; acc}
=> [1, 2]

然后在哈希

上调用它
# config/initializers/hash.rb
class Hash
  def hash_pluck(key)
    self.inject([]){|acc, el| acc << el.last.try(:[], key).to_i; acc}
  end
end

答案 2 :(得分:0)

ActiveSupport添加pluck to Enumerable

答案 3 :(得分:-1)

Pluck仅适用于ActiveRecords。

参考 - Pluck