字典

*题目要求: 处理⼯工程⽂文件crayons.txt中的⽂文本信息,⽂文本内容是关于颜⾊色的,每⾏行都是⼀一 个颜⾊色的信息,例如:Almond#EED9C4,前⼀一个字符串是颜⾊色的名称,后⼀一 个字符串是颜⾊色的16进制⾊色值,处理⽂文本完成如下需求*/

    

// (1)*************************************************************************

// 使⽤用字典管理所有的颜⾊色,即字典中存储的是多个键值对,颜⾊色名称为 key,16进制颜⾊色值(不带#)是value___________________________________________________________________

    

   //读取文件路径,定义字符串接收地址

   NSString *path= @"/Users/dlios/Desktop/Objective-C/ColorManage/ColorManage/crayons.txt";

    

   //定义一个字符串通过地址来接收文件内容

   NSString *sourceStr =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

   //用换行来分割字符串存储到数组arr中

   NSArray *arr =[sourceStr componentsSeparatedByString:@"\n"];

    

   //打印数组,检验对错

    NSLog(@"%@", arr);

    

   //定义一个数组arr1来存储数组arr用#号分割后的小字符串

   NSMutableArray *arr1= [NSMutableArray array];

     //循环用#对数组arr中每个小字符串进行分割

      for (int i= 0;i < [arr count]; i++) {

     //定义一个数组来存储对每次对arr进行分割操作后截取的两段小字符串

      NSArray  *arr2 =[arr[i] componentsSeparatedByString:@"#"];

         //将每次得到的小数组arr2依次添加到大数组arr1中

         [arr1 addObjectsFromArray:arr2];

    }

   //打印arr1

    NSLog(@"%@", arr1);

    

    

// (2)*************************************************************************

// 取出所有的key,升序排列__________________________________________________________

    

   //定义可变数组array1用来存储后面字典的key

   NSMutableArray *array1= [NSMutableArray array];

   //定义可变数组array1用来存储后面字典的value

   NSMutableArray *array2= [NSMutableArray array];

   //循环 偶数为颜色的名字是key 奇数为颜色的编码是value

    for (int i= 0;i < [arr1 count]; i++) {

       if ((i+ 2)% 2 == 0){

          [array1 addObject:arr1[i]];

       }else{

          [array2 addObject:arr1[i]];

       }

    }

   //创建字典 存储对应的key-valuekey为颜色名 value为颜色编码

   NSMutableDictionary *colorDic= [NSMutableDictionarydictionaryWithObjects:array2 forKeys:array1];

   //打印字典

    NSLog(@"%@", colorDic);

   //取出字典中的key

    NSArray *arrKey= [colorDic allKeys];

    

   //对字典中的key排序 *用方法选择器选择排序方法

    NSArray *arr4 =[arrKey sortedArrayUsingSelector:@selector(compare:)];

   //打印排序后的数组

    NSLog(@"%@", arr4);

    

    

// (3)*************************************************************************

// 取出所有的value,按照排序后的key排列______________________________________________

    

   //定义数组存储所有的value

   NSMutableArray *arr5= [NSMutableArray array];

   //取出所有value

    for (NSString *key in arr4){

      //定义字符串 按照arr4中排序号的key把每次循环得出的value赋值到字符串qqq上

       NSString *qqq =[colorDic objectForKey:key];

      //把得出的value添加到数组arr5中

       [arr5 addObject:qqq];

    }

   //按照数组arr4排序好的key打印存有所有value的数组arr5

    NSLog(@"%@", arr5);

    

// (4)*************************************************************************

// 使⽤用⼀一个新的字典管理颜⾊色,对颜⾊色进⾏行分类管理,即:“A”,“B”,“C”... 即这个字典包含多个键值对,key是26个字⺟母,value是数组,数组⾥里存放的是 Color对象(包含name和colorValue)。需要⾃自⼰己创建Color类-------------------------------------------

    

   //初始化manage类中的一个对象

    Manage *colorDictionary= [[Manage alloc] init];

   //定义一个manage中类型的可变字典存储最后大写字母和分组后的颜色组成的大字典

    NSMutableDictionary *dic= [colorDictionary colorDictionary];

   //打印字典 检验是否字典在类中是否定义正确

    NSLog(@"%@", dic);

    

    for (NSString *key in colorDic){

      //定义一个Color类的对象, 此对象为字典类型,通过在管理类中写好的字典的方法,通过字典的key(大写字母)循环依次给color赋值

       Color *color =[[Color alloc] initWithName:key colorValue:[colorDic objectForKey:key]];

      //通过color的key的首字母找出字典中应该存入的数组,"="后面为通过对象color的name的首字母找到大字典中对应的数组

       NSMutableArray *arrayM1= [dic valueForKey:[color.namesubstringToIndex:1]];

      //给通过判断选择后的数组依次添加与分组名key(大写字母)相对应的对象

       [arrayM1 addObject:color];

    }

    

   //打印最后结果,分组之后的字典

    NSLog(@"%@", dic);

    return 0;

}

Color类:

 

#import 

@interface Color: NSObject

{

    NSString *_name;

    NSString *_colorValue;

}

- (id)initWithName:(NSString *)namecolorValue:(NSString *)colorValue;

- (void)setName:()name;

- (NSString *)name;

- (void)setColorValue:()colorValue;

- (NSString *)colorValue;

@end

Color实现:

#import "Color.h"

@implementation Color

- (id)initWithName:(NSString *)namecolorValue:(NSString *)colorValue

{

    self =[super init];

    

    if (self != nil){

       _name =name;

       _colorValue =colorValue;

    }

   return self;

}

- (void)setName:()name

{

    _name =name;

}

- (NSString *)name

{

    return _name;

}

- (void)setColorValue:()colorValue

{

    _colorValue =colorValue;

}

- (NSString *)colorValue

{

   return _colorValue;

}

-(NSString *)description

{

   return [NSString stringWithFormat:@"name:%@ colorValue:%@", _name, _colorValue];

}

@end

Manage类:

 

#import 

@interface Manage: NSObject

{

    NSMutableDictionary *colorDictionary;

}

- (NSMutableDictionary *)colorDictionary;

@end

Manage实现:

//

#import "Manage.h"

@implementation Manage

- (id)init

{

    self =[super init];

    if (self != nil){

      

      colorDictionary =[[NSMutableDictionary alloc] init];

       

       [self groupDic];

    }

   return self;

}

- (void)groupDic

{

   NSArray *groupNames =[NSArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E",@"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S",@"T", @"U", @"V", @"W", @"X", @"Y", @"Z",nil];

    

    for (NSString *group in groupNames){

       

      NSMutableArray *arr= [NSMutableArray array];

       

       [colorDictionary setObject:arr forKey:group];

    }

}

- (NSMutableDictionary *)colorDictionary

{

   return colorDictionary;

}

@end

转发请保留出处!

时间: 2024-10-02 07:16:14

字典的相关文章

Python中字典的基本知识初步介绍

  这篇文章主要介绍了Python中字典的基本知识初步介绍,是Python入门中的基础知识,需要的朋友可以参考下 字典是可变的,并且可以存储任意数量的Python对象,包括其他容器类型另一个容器类型.字典包括键对(称为项目)及其相应的值. Python字典也被称为关联数组或哈希表.字典的一般语法如下: ? 1 dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} 可以用下面的方式创建字典: ? 1 2 dict1 = { 'abc':

在Python中操作字典之clear()方法的使用

  这篇文章主要介绍了在Python中操作字典之clear()方法的使用,是Python入门的基础知识,需要的朋友可以参考下 clear()方法将删除字典中的所有项目(清空字典) 语法 以下是clear()方法的语法: ? 1 dict.clear() 参数 NA 返回值 此方法不返回任何值. 例子 下面的例子显示了clear()方法的使用 ? 1 2 3 4 5 6 7 #!/usr/bin/python   dict = {'Name': 'Zara', 'Age': 7};   print

在Python中操作字典之fromkeys()方法的使用

  这篇文章主要介绍了在Python中操作字典之fromkeys()方法的使用,是Python入门的基础知识,需要的朋友可以参考下 fromkeys()方法从序列键和值设置为value来创建一个新的字典. 语法 以下是fromkeys()方法的语法: ? 1 dict.fromkeys(seq[, value])) 参数 seq -- 这是将用于字典的键准备的值的列表. value -- 这是可选的,如果提供的话则值将被设置为这个值 返回值 此方法返回列表. 例子 下面的例子显示fromkeys

在Python中用get()方法获取字典键值的教程

  这篇文章主要介绍了在Python中用get()方法获取字典键值的教程,是Python入门中的基础知识,需要的朋友可以参考下 get()方法返回给定键的值.如果键不可用,则返回默认值None. 语法 以下是get()方法的语法: ? 1 dict.get(key, default=None) 参数 key -- 这是要搜索在字典中的键. default -- 这是要返回键不存在的的情况下默认值. 返回值 该方法返回一个给定键的值.如果键不可用,则返回默认值为None. 例子 下面的例子显示了g

Python中使用items()方法返回字典元素对的教程

  这篇文章主要介绍了Python中使用items()方法返回字典元素对的教程,是Python入门中的基础知识,需要的朋友可以参考下 items()方法返回字典的(键,值)元组对的列表 语法 以下是items()方法的语法: ? 1 dict.items() 参数 NA 返回值 此方法返回元组对的列表. 例子 下面的例子显示了items()方法的使用. ? 1 2 3 4 5 #!/usr/bin/python   dict = {'Name': 'Zara', 'Age': 7}   prin

在Python中用keys()方法返回字典键的教程

  这篇文章主要介绍了在Python中用keys()方法返回字典键的教程,是Python入门中的基础知识,需要的朋友可以参考下 keys()方法返回在字典中的所有可用的键的列表. 语法 以下是keys()方法的语法: ? 1 dict.keys() 参数 NA 返回值 此方法返回在字典中的所有可用的键的列表. 例子 下面的例子显示keys()方法的用法. ? 1 2 3 4 5 #!/usr/bin/python   dict = {'Name': 'Zara', 'Age': 7}   pri

在Python中操作字典之setdefault()方法的使用

  这篇文章主要介绍了在Python中操作字典之setdefault()方法的使用,是Python入门学习中的基础知识,需要的朋友可以参考下 setdefault()方法类似于get()方法,但会设置字典[键]=默认情况下,如果键不是已经在字典中. 方法 以下是setdefault()方法的语法: ? 1 dict.setdefault(key, default=None) 参数 key -- 这是要被搜索的键 default -- 这是没有找到键的情况下返回的值. 返回值 此方法返回字典可用的

HDU 4099 字典树+高精度

题意:给出某项斐波那契数的前几位,让输出最小的一项前缀为这个串的项数. 先高精度算出前100000项斐波那契的前50位.并把前40位存进字典树预处理一下.字典树节点值存为第几项.然后输入字符串直接查找. #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define N 50 int fib[3][N+1]; cla

Swift数组、字典和集合

原文出自:标哥的技术博客 前言 Swift语言提供Array.Set和Dictionary三种基本的集合类型用来存储集合数据.数组是有序的数据集:集合是无序无重复的数据集:而字典是无序的键值对数组集. Swift的Array.Set和Dictionary类型被实现为泛型集合.因此,它所存储的元素的类型必须是一致的,同样,我们取出来的数据类型也是明确的. 集合的可变性(Mutability Of Collections) 如果创建一个Arrays.Sets或Dictionaries并且把它分配成一

Swift字典集合

字典表示一种非常复杂的集合,允许按照某个键来访问元素.字典是由两部分集合构成的,一个是键(key)集合,一个是值(value)集合.键集合是不能有重复元素的,而值集合是可以重复的,键和值是成对出现的. 如下图所示是字典结构的"学号与学生"集合,学号是键集合,不能重复,学生是值集合,可以重复.   提示 字典中键和值的集合是无序的,即便在添加的时候是按照顺序添加的,当取出这些键或值的时候,也会变得无序.字典集合更适合通过键快速访问值,就像查英文字典一样,键就是要查的英文单词,而值是英文单