Object-C 实现算法,字典无线嵌套字典,获取所有的key 和 value到一个字典中
时间: 2023-03-19 22:24:58 浏览: 229
以下是一个示例 Objective-C 实现,该实现可以将一个字典嵌套到任意深度,并获取所有的键和值放入一个新字典中:
```objective-c
- (NSDictionary *)flattenDictionary:(NSDictionary *)dictionary {
NSMutableDictionary *result = [NSMutableDictionary dictionary];
[self flattenDictionary:dictionary prefix:@"" result:result];
return [NSDictionary dictionaryWithDictionary:result];
}
- (void)flattenDictionary:(NSDictionary *)dictionary
prefix:(NSString *)prefix
result:(NSMutableDictionary *)result {
for (NSString *key in dictionary) {
id value = [dictionary objectForKey:key];
NSString *newPrefix = prefix.length == 0 ? key : [NSString stringWithFormat:@"%@.%@", prefix, key];
if ([value isKindOfClass:[NSDictionary class]]) {
[self flattenDictionary:value prefix:newPrefix result:result];
} else {
[result setObject:value forKey:newPrefix];
}
}
}
```
该算法通过递归实现嵌套字典的扁平化。在递归的每一步中,算法将当前字典中的键和值检查是否为字典类型。如果是字典类型,则算法会将其递归调用,同时使用键和前缀形成新的键,最终将新的键和值添加到结果字典中。如果键和值不是字典类型,则将其添加到结果字典中。
阅读全文