下面是一個簡單的算法做你問什麼,在數據集中只循環一次。
int main (int argc, const char * argv[])
{
@autoreleasepool {
NSArray *booksAndTitles = @[
@[@"Book A1", @"Author A"],
@[@"Book B" , @"Author B"],
@[@"Book C" , @"Author C"],
@[@"Book A2", @"Author A"],
@[@"Book A3", @"Author A"],
@[@"Book C" , @"Author C"],
@[@"Book B" , @"Author B"]
];
NSMutableDictionary *titlesByAuthor = [NSMutableDictionary dictionary];
for (NSArray *pair in booksAndTitles) {
NSString *title = pair[0];
NSString *author = pair[1];
NSMutableArray *titles = titlesByAuthor[author];
if (titles == nil) {
titles = [NSMutableArray array];
titlesByAuthor[author] = titles;
}
[titles addObject:title];
}
NSLog(@"%@",titlesByAuthor);
}
return 0;
}
的輸出是下面的:
{
"Author A" = (
"Book A1",
"Book A2",
"Book A3"
);
"Author B" = (
"Book B",
"Book B"
);
"Author C" = (
"Book C",
"Book C"
);
}
我將不得不使字典像{ 'A':[ 'A', 'B'], 'B':[C],' c':['D','E'],'d':['F','G']} – 2013-03-05 15:12:16
兩個標題可以相同嗎? – 2013-03-05 15:42:11