我有一个数组:a = ["a", "b", "c"]
我希望转换为哈希h = {1=>"a", 2=>"b", 3=>"c"}
其中键是数组的位置。有什么想法吗?
答案 0 :(得分:3)
Ruby中的一种方式是:
h = Hash[a.map.with_index { |s, i| [ i + 1, s ] }]
如果a.map
没有块,则会得到一个Enumerator对象,然后您可以通过使用with_index
迭代该枚举器来获取索引。然后,只需调整起始索引并按正确顺序排列Hash[]
的内容即可。
你也可以这样做(这几乎是House的Java答案的音译):
h = { }
a.each_with_index { |s, i| h[i + 1] = s }
你这样做的方式主要是品味。
答案 1 :(得分:1)
a = ["a", "b", "c"]
Hash[(1..a.length).zip(a)]
1..a.length
为您提供[1,2,3]
(隐式转化后)
zip(a)为您提供[1,"a",2,"b",3,"c"]
答案 2 :(得分:0)
只需循环遍历数组,在Java中就是以下内容。
Map<Integer, String> map = new HashMap<Integer, String>();
for (int i = 0; i < array.length; i++) {
map.put(Integer.valueOf(i), array[i]);
}
答案 3 :(得分:0)
在Python中试用:
>>> dict((k, v) for k, v in enumerate(["a", "b", "c"]))
{0: 'a', 1: 'b', 2: 'c'}
答案 4 :(得分:0)
a = ["a", "b", "c"]
Hash[a.map.with_index(1){|i,ind| [ind,i] }]
# >> {1=>"a", 2=>"b", 3=>"c"}