我经常遇到这种情况。我有一批这种格式的数据(存储在 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 中这样做。如果有特定于语言的解决方案会很棒,但我真的在寻找最有效的通用算法方法。