2015-05-21 76 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