OC-字典常用操作(NSDictionary、NSMutableDictionary)

本文详细介绍了Objective-C中字典的使用方法,包括字典的初始化、获取数量、查询、排序、保存与读取、可变字典的操作、快速枚举与迭代枚举器等核心知识点。

字典是关键字及其定义的集合
NSDictionary能在给定得关键字key(通常是一个NSString字符串)下存储一个数值value(可以是任意类型的Objective-C对象),然后你就可以用这个关键字来查找相应的数据
字典(也被称为散列表或关键数组)使用的是键查询的优化方式,可以立即查找出查询的数据,而不需要遍历

[objc]  view plain copy
  1. NSString *f1 = @"one";  
  2.     NSString *f2 = @"two";  
  3.     NSString *f3 = @"three";  
  4.     NSArray *key = @{@"1"@"2"@"3"};  
  5.     NSString *value = @{@"one"@"two"@"three"};  
  6.     //字典初始化的方法,一个key只有一个value,一个value可以有很多的key  
  7.     NSDictionary *f_nsd1 = [NSDictionary dictionaryWithObjectsAndKeys:f1@"1", f2@"2", f3@"3" ,nil];  
  8.     NSDictionary *f_nsd2 = @{@"11" : f1@"22" : f2@"33" : f3};  
  9.     NSDictionary *f_nsdarr = [NSDictionary dictionaryWithObjects:value forKeys:key];  
  10.       
  11.     //获取字典数量  
  12.     NSInteger count = [f_nsd1 count];  
  13.       
  14.     //取值,如果字典没有所查找数据返回nil值  
  15.     NSString *f_key1 = [f_nsd1 objectForKey:@"1"];  
  16.     NSString *f_key2 = f_nsd2[@"11"];  
  17.     //排序  
  18.       
  19.     NSArray *arrs=[f_nsd1 keysSortedByValueUsingSelector:@selector(compare:)];  
  20.       
  21.     //获取所有key  
  22.     NSArray *keys = [f_nsd1 allKeys];  
  23.     //获取所有Value  
  24.     NSArray *values = [f_nsd1 allValues];  
  25.       
  26.     //保存对象到内容文件  
  27.     NSString *path=@"/Users/apple/Desktop/test.plist";  
  28.     [f_nsd1 writeToFile:path atomically:YES];  
  29.     //从以前保存的文件读取到字典对象  
  30.     NSDictionary *data=[NSDictionary dictionaryWithContentsOfFile:path];  
  31.       
  32.     //可变字典  
  33.     //向NSMutableDictionary 类发送dictionary消息,可以创建新的NSMutableDictionary对象  
  34.     //也可以使用dictionaryWithCapacity:创建限制大小的可变数组  
  35.     NSMutableDictionary *f_nsm = [NSMutableDictionary dictionary];  
  36.     [f_nsm setObject:f1 forKey:@"111"];  
  37.     [f_nsm setObject:f2 forKey:@"222"];  
  38.     [f_nsm setObject:f3 forKey:@"333"];  
  39.       
  40.     //向字典里添加字典  
  41.     NSDictionary *f_nsd3 = [NSDictionary dictionaryWithObjects:@"four" forKeys:@"444"];  
  42.     [f_nsm addEntriesFromDictionary:f_nsd3];  
  43.       
  44.     [f_nsm removeObjectForKey:@"333"]; //从字典里删除单个key的value  
  45.       
  46.     //删除一组key的value  
  47.     NSArray *arrkeys = [NSArray arrayWithObjects:@"222"@"333", nil nil];  
  48.     [f_nsm removeObjectsForKeys:arrkeys];  
  49.       
  50.     //删除所有value  
  51.     [f_nsm removeAllObjects];  
  52.       
  53.     //快速枚举  
  54.     for (id key in f_nsm) {  
  55.         NSString *object = [f_nsm objectForKey:key];  
  56.     }  
  57.       
  58.     //迭代枚举器  
  59.     NSEnumerator *enumerator = [f_nsm keyEnumerator];  
  60.     id key = [enumerator nextObject];  
  61.     while (key) {  
  62.         id objects = [f_nsm objectForKey:key];  
  63.         key = [enumerator nextObject];  
  64.     }  
  65.       
  66.     //与NSArray一样,没有适合NSMutableDictionary的字面量初始化语法  
  67.       
  68.     

最后提醒各位一点,切记不要尝试创建NSStringNSArrayNSDictionary的子类

AI实战-水质量数据集分析预测实例(含16个源代码+512.88 KB完整的数据集)代码手工整理,无语法错误,可运行。包括:16个代码,共119.34 KB;数据大小:1个文件共512.88 KB。使用到的模块:pandasnumpyseabornmatplotlib.pyplotsklearn.model_selection.train_test_splitsklearn.impute.KNNImputersklearn.preprocessing.PowerTransformersklearn.compose.ColumnTransformerimblearn.pipeline.Pipelineimblearn.over_sampling.SMOTEsklearn.ensemble.AdaBoostClassifiersklearn.metrics.accuracy_scoresklearn.metrics.precision_scoresklearn.metrics.recall_scoresklearn.metrics.f1_scoreoptunatensorflow.keras.models.Sequentialtensorflow.keras.layers.Conv1Dtensorflow.keras.layers.LSTMtensorflow.keras.layers.Densesklearn.preprocessing.MinMaxScalertensorflow.keras.callbacks.EarlyStoppingsklearn.metrics.mean_squared_errorsklearn.metrics.mean_absolute_errorsklearn.metrics.r2_scoretensorflow.keras.layers.SimpleRNNtensorflow.keras.layers.GRUosmatplotlib.patches.Rectanglescipy.stats.ttest_indsklearn.decomposition.PCAsklearn.preprocessing.StandardScalerimblearn.combine.SMOTETomeksklearn.metrics.classification_reportsklearn.metrics.confusion_matrixsklearn.metrics.roc_curvesklearn.metrics.aucsklearn.ensemble.GradientBoostingClassifiercatboost.CatBoostClassifierlightgbm.LGBMClassifierxgboost.XGBClassifiersklearn.ensemble.BaggingClassifiersklearn.ensemble.RandomForestClassifiersklearn.ensemble.VotingClassifiershapplotly.offlineplotly.expressmissingnosklearn.neighbors.KNeighborsClassifiersklearn.tree.DecisionTreeClassifiersklearn.model_selection.RandomizedSearchCVsklearn.model_selection.GridSearchCVsklearn.preprocessing.RobustScalerwarningssklearn.impute.SimpleImputersklearn.linear_model.LogisticRegressionsklearn.svm.SVCscipy.statsstatsmodels.multivariate.manova.MANOVAsklearn.manifold.TSNEsklearn.cluster.KMeanssklearn.model_selection.RepeatedStratifiedKFoldsklearn.treesklearn.metrics.roc_auc_scoresklearn.tree.plot_treepyswarmssklearn.model_selection.cross_val_scoresklearn.pipeline.Pipelinexgboost.sklearn.XGBClassifierpic
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值