ハッシュの高度な書き方

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
hash = [
 {"field1", "field2", "field3", "field4"},
 {1, 2, 3, 4}
 {10, 20, 30, 40},
 {100, 200, 300, 400}
]

こういうハッシュの書き方ができる言語ってないの?
2デフォルトの名無しさん:2012/10/08(月) 02:24:25.85
アイちゃんかアスペの匂いがするな。
3デフォルトの名無しさん:2012/10/08(月) 02:26:28.33
hash = [
 {"field1":1, "field2":2, "field3":3, "field4":4},
 {"field1":10, "field2":20, "field3":30, "field4":40},
 {"field1":100, "field2":200, "field3":300, "field4":400},
]

これほど冗長な書き方はないだろう。
何回fieldを書かせれば気が済むのか?
4デフォルトの名無しさん:2012/10/08(月) 06:32:51.05
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
5デフォルトの名無しさん:2012/10/08(月) 12:13:11.52
ハッシュじゃなくて連想配列だろいい加減にしろ
6デフォルトの名無しさん:2012/10/08(月) 20:38:01.67

scala> List(1,10,100).map{x=>(List("field1","field2","field3") zip (1 to 3).map(_ * x)).toMap}
res3: List[scala.collection.immutable.Map[java.lang.String,Int]] = List(Map(field1 -> 1, field2 -> 2, field3 -> 3), Map(field1 -> 10, field2 -> 20, field3 -> 30), Map(field1 -> 100, field2 -> 200, field3 -> 300))
7デフォルトの名無しさん:2012/10/08(月) 20:56:31.30
>>6
あー、馬鹿には例題が悪かったね。

hash = [
 {"field1", "field2", "field3", "field4"},
 {5641, 0, 9441, 789164748}
 {43, 83, 54, 96},
 {784113, 9168, 3, 23}
]
8デフォルトの名無しさん:2012/10/08(月) 22:08:52.58

List(
List(5641, 0, 9441, 789164748),
List(43, 83, 54, 96),
List(784113, 9168, 3, 23)
).map{x=>List("field1","field2","field3","field4").zipWithIndex.map(y=>y._1->x(y._2)).toMap}
9デフォルトの名無しさん:2012/10/08(月) 22:33:41.15
関数化してみた。うだうだ言ってないで頭を使え!

def foo[A,B](keyList: A*)(valList: List[B]*) =
valList.map{x=>keyList.zipWithIndex.map(y=>y._1->x(y._2)).toMap}
foo("field1","field2","field3","field4")(
List(5641, 0, 9441, 789164748),
List(43, 83, 54, 96),
List(784113, 9168, 3, 23)
)
10デフォルトの名無しさん:2012/10/09(火) 00:53:35.39
このデータ構造どういったときに使うのだろう
[0]["field1"]とか[2]["field2"]とかで指定するのなら、設計おかしいんじゃないの?
11デフォルトの名無しさん:2012/10/10(水) 02:51:59.94
>>10
RDBMSやCSV形式だろ。

こんなことにも気づかないのは
経験の差か。
12デフォルトの名無しさん:2012/10/10(水) 02:53:49.14
>>11
お前には経験があると自慢してんのか? お〜ん?
13デフォルトの名無しさん:2012/10/10(水) 03:21:27.46
お前が思いつかなかったのかどうかのほうが
今は重要だよw
14デフォルトの名無しさん:2012/10/10(水) 03:49:17.81
>>13
どう重要なの?
15デフォルトの名無しさん:2012/10/10(水) 06:43:54.71
こんな事も解決出来ない >>1 には
経験もスキルも無い事は確実だがな。
16デフォルトの名無しさん:2012/10/10(水) 09:00:16.56
struct {
int field1; int field2; int field3; int field4;
} xxx = {
{1, 2, 3, 4},
{10, 20, 30, 40},
{100, 200, 300, 400}
}

Cでいいじゃん
17デフォルトの名無しさん:2012/10/10(水) 09:05:38.22
間違えた
struct {
int field1; int field2; int field3; int field4;
} xxx[] = {
{1, 2, 3, 4},
{10, 20, 30, 40},
{100, 200, 300, 400}
};
18デフォルトの名無しさん:2012/10/10(水) 21:39:07.00
Cだと総称型定義出来ないし、動的に値追加出来ないよね
19デフォルトの名無しさん
そもそもそれHashじゃ無いし