-1

次のようなメイン辞書があります。

data = [{"key1": "value1", "key2": "value2", "key3": "value3"}, {"key1": "value1", "key2": "value5", "key3": "value6"}, {"key1": "value2", "key2": "value2", "key3": "value9"} ]

そして、 と の一意の組み合わせがあると仮定して、辞書を作成する必要があり[value for "key1"] ます[value for "key2"]

つまり、次のような辞書を作成する必要があります。

result = [{"value1" {"value2" : "value3", "value5" : "value6"}}, {"value2" {"value2" : "value9"}}]
4

1 に答える 1

0

あなたが探しているものを正確に理解しているかどうかはわかりませんが、ここにあなたが説明していることに近いことをする小さなプログラムがあります. この質問は、あなたが付けたタグとは何の関係もないことに注意してください。アルゴリズムの基本問題です。

int main (int argc, const char * argv[]) {

    @autoreleasepool {

        NSArray *array = @[
            @{@"key1": @"value1", @"key2": @"value2", @"key3": @"value3"},
            @{@"key1": @"value1", @"key2": @"value5", @"key3": @"value6"},
            @{@"key1": @"value2", @"key2": @"value2", @"key3": @"value9"}
        ];

        NSMutableDictionary *result = [NSMutableDictionary dictionary];

        for (NSDictionary *dict in array) {
            [dict enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
                NSMutableArray *valuesForKey = [result objectForKey:key];
                if (valuesForKey == nil) {
                    valuesForKey = [NSMutableArray array];
                    [result setObject:valuesForKey forKey:key];
                }
                [valuesForKey addObject:value];
            }];
        }

        for (id key in result.allKeys) {
            NSMutableArray *valuesForKey = [result objectForKey:key];
            [valuesForKey sortUsingSelector:@selector(compare:)];
        }

        NSLog(@"Dictionary: %@", result);
    }
    return 0;
}

出力は次のとおりです。

2012-09-24 20:44:02.509 Dummy[68684:303] Dictionary: {
    key1 =     (
        value1,
        value1,
        value2
    );
    key2 =     (
        value2,
        value2,
        value5
    );
    key3 =     (
        value3,
        value6,
        value9
    );
}
于 2012-09-24T18:47:20.547 に答える