2012-09-24 167 views
-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"}}] 
+1

以及如何做的NSArray(如標題這麼說)有什麼關係你的問題嗎? – TheAmateurProgrammer

+0

更改了標題。謝謝。 –

回答

0

我不知道我理解你尋找什麼,但這裏是一個小程序THA t會做一些你正在描述的東西。請注意,這個問題與您標記的任何標籤無關。這是一個基本的算法問題。

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 
    ); 
} 
+0

不完全是我想要的。 –

+0

如果你可以更清楚地知道你想要什麼,那麼也許你可以得到答案。你會「喜歡」的字典僅包含對「值」的引用,而不包含對「鍵」的引用。無論如何,我懷疑你需要更多的循環。 – aLevelOfIndirection