是否有哈希值?
我有一个类似下面的哈希,我试图采用以下命令。我知道它可以用不同的方式完成。但是我不知道如果采用以下的方法:
hash = {"0"=>{"user_id"=>"1"}, "0"=>{"user_id"=>"2"}}
hash.pluck("user_id")
答案 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