2015-05-21 79 views
-2

如何將這兩個字符串列表轉換爲關鍵字參數?將兩個字符串列表轉換爲關鍵字參數

["foo", "bar", "fizz"], ["1", "2", "buzz"] 

(foo: "1", bar: "2", fizz: "buzz") 
+0

你不能那樣做。這不是一個對象。或者,你的意思是如何將參數傳遞給一個方法? – sawa

+0

您查找的結果無效 –

+0

您的意思是:{foo:「1」,bar:「2」,fizz:「buzz」}?或者你想要一個字符串parens:'(foo:「1」,bar:「2」,fizz:「buzz」)'? –

回答

5

你可以散列兩個列表:

a = ["foo", "bar", "fizz"] 
b = ["1", "2", "buzz"] 
res = Hash[a.zip b] 

res是:{"foo"=>"1", "bar"=>"2", "fizz"=>"buzz"}

+0

爲什麼downvote? – Mureinik

+2

你永遠不會知道。 (也許因爲你沒有改變符號的鍵,這是微不足道的)。這就是生活。 –

+2

儘管SO確實表示你應該評論一下你爲何倒下了。這是社區禮節的一部分。 –

-1

words = ["foo", "bar", "fizz"]

integers = ["1","2","3"]

你可以試試這個:如果你想改變琴絃的符號,並進行散列出來的Hash[words.zip(integers)]

+0

或在新的Ruby中使用'words.zip(整數).to_h'。 –

+0

請注意,OP的整數實際上是字符串。 –

+0

...被轉換爲符號。 –

2

,你可以這樣做:

strings = ["foo", "bar", "fizz"] 
symbols = strings.map(&:to_sym) 
integers = ["1","2","3"] 

Hash[symbols.zip(integers)] 

你會得到{foo: "1", bar: "2", fizz: "buzz"}根據需要。

+1

你爲什麼要[做一個哈希](http://en.wiktionary.org/wiki/make_a_hash_of)? –

0

不像其他答案那麼幹淨或小,但這個工程..並轉換爲符號。亞倫編碼提供了一個很好的速記方式!

w = ["foo", "bar", "fizz"] 
w2 = ["1", "2", "buzz"] 
c = 0 
h = Hash.new { |hash, sym| hash[sym] } 

w.each do |x| 
    h[x.to_sym] = w2[c] 
    c += 1 
end 

puts h