-3

我有一个数组:a = ["a", "b", "c"]我想转换为一个哈希h = {1=>"a", 2=>"b", 3=>"c"} ,其中键是数组的位置。有任何想法吗?

4

5 回答 5

3

Ruby 中的一种方法是:

h = Hash[a.map.with_index { |s, i| [ i + 1, s ] }]

如果你a.map没有块,你会得到一个 Enumerator 对象,那么你可以通过迭代该 Enumerator 来获取索引with_index。那么这只是一个简单的调整起始索引并以正确的顺序排列的事情Hash[]

您也可以这样做(这几乎是 House 的 Java 答案的音译):

h = { }
a.each_with_index { |s, i| h[i + 1] = s }

你用哪种方式做主要是一个品味问题。

于 2013-06-01T04:29:54.083 回答
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"]

于 2013-06-01T06:16:10.590 回答
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]);
}
于 2013-05-31T23:33:57.880 回答
0

在 Python 中尝试:

>>> dict((k, v) for k, v in enumerate(["a", "b", "c"]))
{0: 'a', 1: 'b', 2: 'c'}
于 2013-06-01T03:52:17.407 回答
0
a = ["a", "b", "c"]
Hash[a.map.with_index(1){|i,ind| [ind,i] }]
# >> {1=>"a", 2=>"b", 3=>"c"}
于 2013-06-01T05:50:42.073 回答