私はこれにかなり頻繁に遭遇します。この形式のいくつかのバージョンのデータのバッチがあります(CSV、XMLで保存されていますが、問題ありません)。
key1|value1
key1|value2
key1|value3
key2|value4
key2|value5
etc.
そして、この形式でそれを処理できる必要があります:
data[key1] => [value1, value2, value3]
data[key2] => [value4, value5]
etc.
AからBに変換するための最良のアプローチは何ですか?私は通常、このようなリスト(擬似コード)をループしますが、配列構築コードを繰り返さなければならないのは好きではありません。
data = []
values = []
currentKey = ""
foreach (line in inputData) {
key, value = split(line)
if ((currentKey != "") and (currentKey != key)) {
data[currentKey] = values
values = []
}
currentKey = key
values.add(value)
}
// this is the part I don't like, but it's necessary to capture the last group
data[currentKey] = values
少なくともJavascript、C#、Perl、およびPHPでこれを行わなければならなかったので、私は特に言語に名前を付けていません。素晴らしい言語固有のソリューションがあるが、私は本当に最も効率的な一般的なアルゴリズムのアプローチを探しています。