首页 > 其他 > 详细

ruby语法之zip

时间:2020-08-27 12:22:06      阅读:95      评论:0      收藏:0      [点我收藏+]
keys = [:foo, :bar, :bat]
vals = [4, 5, 6]
# do something to get
{foo: 4, bar: 5, bat: 6}


h = Hash[keys.zip vals]
# 其中 keys.zip vals  => [[:foo, 4], [:bar, 5], [:bat, 6]]
# 然后再用Hash::[]方法生成一个Hash

数组等长的情况下,这么做很完美,如果不等长呢?

keys = [:foo, :bar, :bat]
vals = [4, 5, 6, 7]
keys.zip vals # => [[:foo, 4], [:bar, 5], [:bat, 6]]
vals = [4, 5]
keys.zip vals # => [[:foo, 4], [:bar, 5], [:bat, nil]]

  

kvs = keys.zip vals
[keys, vals].transpose == kvs # => keys和vals长度相同时为true,长度不同时transpose方法会报错
Hash[kvs] == kvs.to_h # => true  

实例:

irb(main):001:0> a = [1,2,3,4]
=> [1, 2, 3, 4]
irb(main):002:0> b = [‘a‘, ‘b‘, ‘c‘, ‘d‘]
=> ["a", "b", "c", "d"]
irb(main):003:0> Hash[b.zip a]
=> {"a"=>1, "b"=>2, "c"=>3, "d"=>4}
irb(main):004:0> b.zip a
=> [["a", 1], ["b", 2], ["c", 3], ["d", 4]]

  

ruby语法之zip

原文:https://www.cnblogs.com/hello-ruby/p/13570199.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!