OC學習日記09 字典

2021-07-16 10:51:54 字數 4225 閱讀 9846

字典其實在理解了陣列之上去看的話,是非常容易的。陣列是乙個乙個數出現的,而字典是一對一對「數」出現的,這個「一對數」就是鍵值對。但是我們要注意,字典是集合,集合是無序的。而其實還有乙個型別叫set集合,它也是無序的,因為它是單值無重複的集合。而且他們都有可變和不可變之分,我們把字串、陣列、字典還有set集合一起對比著學,就會容易記住了。

字典是關鍵字「key」及其定義的值(value)所構成的集合,即它是由key-value組成的鍵值對的集合。『key』一般是『nsstring』型別的,『value』是oc中任意物件。對於字典來講,我們就是通過『key』來訪問『value』。
在有大量的資料或頻繁的查詢的時候,使用字典效率更高。因為字典採用鍵查詢的優化查詢方式。
建立乙個空的字典
nsdictionary *dictionary1=[[nsdictionary alloc]init];

nsdictionary *dictionary2=[nsdictionary dictionary];

nsdictionary *dictionary3=[nsdictionary dictionarywithobject:@"rick" forkey:@"name"];

建立乙個多個鍵值對的字典
nsdictionary *dictionary4=[nsdictionary dictionarywithobjectsandkeys:@"rick",@"name",@25,@"age",@"g2",@"address",nil];
字典裡面存放的元素都要是物件型別才可以,如果是基本資料型別,要先把基本資料型別進行封裝,然後再放到這些集合中去。

nsdictionary *dictionary5=[nsdictionary dictionarywithdictionary:dictionary4];

nslog(@"%@",dictionary5);

nsdictionary *dictionary6=@{};
新語法建立只有乙個鍵值對的字典。
nsdictionary *dictionary7=@;
新語法建立只有乙個鍵值對的字典。
nsdictionary *dictionary8=@;
nsdictionary *dictionary9=[nsdictionary dictionarywithcontentsoffile:@""];
nsdictionary *dictionary10=[nsdictionary dictionarywithcontentsofurl:[nsurl urlwithstring:@"www.baidu.com"]];
nsuinteger count=[dictionary4 count];
如何訪問字典?通過key訪問字型中對應的值

nsstring *name=[dictionary4 objectforkey:@"name"];
新語法
nsstring *newname= dictionary4[@"name"];
表示字典中所有的key
nsarray *keysarray=dictionary4.allkeys;

nsarray *valuesarray=dictionary4.allvalues;

for (int i=0; i.count; i++)

//forin

for (nsstring *key in keysarray)

使用列舉器遍歷
nsenumerator *enumerator =[keysarray objectenumerator];

id key;

while(key = [enumerator nextobject])

nsdictionary *dictionary=@;

for (nsstring *str in dictionary.allkeys)

建立乙個空的字典
nsmutabledictionary *mdictionary1 =[nsmutabledictionary dictionary];
建立乙個有乙個鍵值對的可變字典
nsmutabledictionary *mdictionary2=[nsmutabledictionary dictionarywithobject:@"rick" forkey:@"name"];

nsmutabledictionary *mdictionary3=[nsmutabledictionary dictionarywithobjectsandkeys:@"rick",@"name",@25,@"age",@"gz",@"address", nil];

通過乙個字典建立乙個字典
nsmutabledictionary *mdictionary4=[nsmutabledictionary dictionarywithdictionary:mdictionary3];

可變字典獨有的初始化方法
nsmutabledictionary *mdictionary5=[nsmutabledictionary dictionarywithcapacity:10];
nsmutabledictionary *mdictionary6=[nsmutabledictionary dictionarywithcontentsoffile:@""];
nsmutabledictionary *mdictionary7=[nsmutabledictionary dictionarywithcontentsofurl:[nsurl urlwithstring:@"www.baidu.com"]];
[mdictionary5 setvalue:@"rick"

forkey:@"name"];

[mdictionary5 setvalue:@25

forkey:@"age"];

(如果原來的字典中已經有了akey這個值,那麼這次新加的值就會覆蓋原來的關鍵字(鍵)akey對應的值。還是一樣的命令,後面的值會把前面的覆蓋掉)

[mdictionary5 setvalue:@"jack"

forkey:@"name"];

mdictionary5[@"name"]=@"leo";

刪除指定key的物件
[mdictionary5 removeobjectforkey:@"name"];
刪除所有的物件
[mdictionary5 removeallobjects];
nsmutabledictionary *mdic8=[nsmutabledictionary dictionarywithobjectsandkeys:@"rick",@"name",

@25,@"age",

@"gz",@"address",

@"rick",@"name2",

@"rick",@"name3",nil];

nsarray *keysarray=mdic8.allkeys;

nsarray *valuesarray=mdic8.allvalues;

方法一
for(int i=0;icount;i++)

if([valuesarray[i] iskindofclass:[nsnumber class]])

}

方法二
for (nsstring *key in keysarray) 

day09 字典型別

1 作用 2 定義 內用逗號分隔開多個key value,其中value可以使任意型別,但是 key必須是不可變型別,且不能重複 造字典的方式一 d d dict print d k1 print d 1,2,3 print type d d 預設定義出來的是空字典 print d,type d 1...

python學習筆記09 字典的使用

字典 一種即的資料型別,使用就像我們上學用的字典,通過筆畫 字母來查對應的內容。字典的特性 info print info 列印結果 字典 查,get key info print info.get stu1103 一般建議用get key 這個方法來取值 print info.get stu110...

Python3學習筆記09 字典

字典是另一種可變容器模型,且可儲存任意型別物件。字典的每個鍵值 key value 對用冒號 分割,每個對之間用逗號 分割,整個字典包括在花括號 中 鍵必須是唯一的,但值則不必。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。d 通過鍵訪問值 print d michael 修改字典 ...