//

//  main.swift

//  字典

//

//  Created by zhangbiao on 14-6-15.

//  Copyright (c) 2014年 理想. All rights reserved.

//

import Foundation

println("字典")

/*

字典是一种存储相同类型多重数据的存储器。每个值(value)都关联独特的键(key),键作为字典中的这个值数据的标识符。和数组中的数据项不同,字典中的数据项并没有具体顺序。我们在需要通过标识符(键)访问数据的时候使用字典

*/

//(1)创建一个字典

var dic:Dictionary<String,String>=["三国演义":"罗贯中","水浒传":"施耐庵","红楼梦":"曹雪芹","西游记":"吴承恩"];

println(dic);

//执行结果:[三国演义: 罗贯中, 水浒传: 施耐庵, 红楼梦: 曹雪芹, 西游记: 吴承恩]

//(2)访问字典

var name=dic["三国演义"];

println(name);

//执行结果:罗贯中

//(3)向字典中添加键值

var student:Dictionary<String,Int> = ["小明":10001,"小华":10002,"小红":10003];  // 声明一个学生字典  键: 姓名  值:学号

//添加

student["理想"]=10004;

println(student);

//执行结果:[小华: 10002, 小红: 10003, 小明: 10001, 理想: 10004]

//修改

student.updateValue(12345,forKey:"理想");  // 将理想的学号改为12345  updateValue() 这个方法返回更新值之前的原值。这样方便我们检查更新是否成功

println(student);

//执行结果:[小华: 10002, 小红: 10003, 小明: 10001, 理想: 12345]

//删除

student.removeValueForKey("理想"); //将理想 删除

println(student);

//执行结果:[小华: 10002, 小红: 10003, 小明: 10001]

//获得键对应的值

let value = student["小明"]; //将理想 删除

println("小明 的 value 为 \(value)");

//执行结果: 小明 的 value 为 10001

//(4)遍历  for in 字典  会以元组(键,值)的形式返回

for (key,value) in student  //无序

{

println("键:\(key) 值:\(value)");

}

//执行结果:

/*

键:小华 值:10002

键:小红 值:10003

键:小明 值:10001

*/

//或者

for tuples in student  //无序

{

println("键:\(tuples.0) 值:\(tuples.1)");

}

//我们也可以通过访问他的keys或者values属性(都是可遍历集合)检索一个字典的键或者值

for key in student.keys

{

println("key=:\(key)");

}

//执行结果:

/*

key=:小华

key=:小红

key=:小明

*/

for value in student.values

{

println("value=:\(value)");

}

//执行结果:

/*

key=:10002

key=:10003

key=:10001

*/

//(5)通过构造方法创建字典

var namesOfIntegers = Dictionary<Int, String>()

//(6)字典类型的赋值和拷贝行为

/*

注意:字典和数组的拷贝是不同的

1.无论何时将一个字典实例赋给一个常量或变量,或者传递给一个函数或方法,这个字典会即会在赋值或调用发生时被拷贝。

2.如果字典实例中所储存的键(keys)和/或值(values)是值类型(结构体或枚举),当赋值或调用发生时,它们都会被拷贝。相反,如果键(keys)和/或值(values)是引用类型,被拷贝的将会是引用,而不是被它们引用的类实例或函数

*/

var student2=student;  // 字典赋值

println("  student 为:\(student)\n student2 为:\(student2) ");

/*

执行结果:

student  为:[小华: 10002, 小红: 10003, 小明: 10001]

student2 为:[小华: 10002, 小红: 10003, 小明: 10001]

*/

student.updateValue(12345,forKey:"小明"); // 改变 student 中 小明的 value  student2不会改变

println("  student 为:\(student)\n student2 为:\(student2) ");

/*

执行结果:

student 为: [小华: 10002, 小红: 10003, 小明: 12345]

student2 为:[小华: 10002, 小红: 10003, 小明: 10001]

*/

swift Dictionary 字典相关推荐

  1. swift_005(Swift的Dictionary 字典)

    1.Dictionary (可变不可变不区分了)字典  <Swift开发指南> // Swift 字典的key没有类型限制可以是整型或字符串,但必须是唯一的. var someDict:[ ...

  2. Swift - 从字典(或者Alamofire)直接创建Model文件的工具

    Swift - 从字典(或者Alamofire)直接创建Model文件的工具 效果 1. 常规生成model的方式 2. 通过debug创建model的方式 特性 1. 可以处理JSON格式的字典数据 ...

  3. List数组,string数组,Dictionary字典三种contain方法的查询速度

    在生成随机不重复数时要判断生成的数是否已生成过,这时就要和原来生成的数进行比较是否有重复,有以下三种方法 1. list数组采用contains()方法 2.string数组采用contains()方 ...

  4. C#中的Dictionary字典类介绍

    关键字:C# Dictionary 字典  作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-diction ...

  5. boost::contract模块实现dictionary字典的测试程序

    boost::contract模块实现dictionary字典的测试程序 实现功能 C++实现代码 实现功能 boost::contract模块实现dictionary字典的测试程序 C++实现代码 ...

  6. 关于Dictionary字典和List列表

    命名空间System.Collections.Generic中有两个非常重要,而且常用的泛型集合类,它们分别是Dictionary<TKey,TValue>字典和List<T> ...

  7. C#中的Dictionary字典类介绍(转载)

    C#中的Dictionary字典类介绍 关键字:C# Dictionary 字典  作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/ ...

  8. (转)C#中的Dictionary字典类介绍

    关键字:C# Dictionary 字典  作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-diction ...

  9. 你能熟练使用Dictionary字典和List列表吗?

    命名空间System.Collections.Generic中有两个非常重要,而且常用的泛型集合类,它们分别是Dictionary<TKey,TValue>字典和List<T> ...

最新文章

  1. 消息队列怎么保证消息有没有重复消费(幂等性)?
  2. 编译安装mariadb-10.0.10
  3. pythonchar中的拟合方法_Python字符串魔法方法
  4. excel 电阻并联计算_电阻器的构成及取代原则
  5. 『设计模式』再谈Macdonald的汉堡口味--策略模式
  6. mysql中as用法
  7. 通过border来实现各种三角符号
  8. 莫烦Matplotlib可视化第五章动画代码学习
  9. idea编辑区光标问题
  10. java通过InputStream读取文件
  11. 破解成功!iMac成功运行WindowsXP系统
  12. 10月21日Ajax培训日记
  13. HTML实现圆形头像效果
  14. oracle数据库中的同义词,Oracle创建数据库同义词
  15. 香槟分校计算机科学排名,伊利诺伊大学厄巴纳香槟分校计算机科学computer science专业排名第29名(2020THE泰晤士高等教育世界大学排名)...
  16. 如何使用谷歌浏览器Chrome把整个网页保存成图片
  17. 真香!一行代码搞定微信支付回调
  18. Linux上编译并配置opencv-3.3.0过程
  19. 常用Linux性能检测命令
  20. 记一次rc.local中python脚本无法运行的解决过程

热门文章

  1. 时差 频差 双星定位 matlab,双星时差频差联合定位方法及其误差分析
  2. 为你揭露2018微信公开课pro的12个重点
  3. 仓库无线覆盖解决方案
  4. C语言练习题之标准电话号码(MOOC)
  5. 【Mac 教程系列第 18 篇】如何修改 iTerm2 的背景图片
  6. DSPE-PEG-MMPs; PEG-MMPs-DSPE ;聚乙二醇-基质金属蛋白酶-磷脂 ;磷脂-聚乙二醇-基质金属蛋白酶
  7. 扡扫机器人_米家扫拖机器人:扫地拖地一把抓,小爱同学不落下
  8. 持久化存储-MySql拓展
  9. 费诺编码 c++代码实现 信息论实验
  10. gvim使用 pratical vim 读书笔记