Thread overview
Build Hash from Array in one statement ?
Feb 22, 2014
Gordon
Feb 22, 2014
Tobias Pankrath
Feb 22, 2014
Ali Çehreli
February 22, 2014
Hello,

Is there a way to quickly build a hash from the values of an array?

A one-statement equivalent of:
  T[] array_values ;
  int[T] hash_values;

  hash_values = map!(XXXX) (array_values) ;

Instead of:
  for (v; array_values) {
     hash_values[v] = 1;
  }


in Perl, that would be:

  %hash = map { $_ => 1 } @array;

---

Or, put differently, is there a way to convert values in an array to keys of hash in one statement ?

Thanks!
 -gordon
February 22, 2014
> ---
>
> Or, put differently, is there a way to convert values in an array to keys of hash in one statement ?
>
> Thanks!
>  -gordon

std.array.assocArray.

--
T[] keys;
auto aa = zip(keys, repeat(true)).assocArray;
February 22, 2014
On 02/22/2014 11:26 AM, Gordon wrote:

> Is there a way to quickly build a hash from the values of an array?

If I am allowed to misunderstand :) it as a *single* hash from all of the values, then you can use D's internal hash algorithm for arrays:

import std.stdio;

void main()
{
    auto arr = [ 1, 2, 3 ];
    writeln(typeid(arr).getHash(&arr));
}

Ali