//

//  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. iOS - Swift Dictionary 字典

    前言 public struct Dictionary<Key : Hashable, Value> : CollectionType, DictionaryLiteralConverti ...

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

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

  3. 你能熟练使用Dictionary字典和List列表吗?(转)

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

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

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

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

      Dictionary字典类介绍 必须包含名空间System.Collection.Generic    Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)    键必须是 ...

  6. dictionary(字典)

    dictionary(字典):   字典对象   字典是一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划.字母来查对应页的详细内容. 1.      dic={"n ...

  7. C# Dictionary 字典

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

  8. 关于Dictionary字典和List列表

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

  9. Python dictionary 字典 常用法

    Python dictionary 字典 常用法 d = {} d.has_key(key_in)       # if has the key of key_in d.keys()          ...

随机推荐

  1. Babel6.x 转换ES6

    本文介绍Babel6.x的安装过程~ 首先呢,可以使用Babel在线转换 https://babeljs.io/repl/ 然后进入主题:安装Babel(命令行环境,针对Babel6.x版本) 1.首 ...

  2. 【二分答案】 【POJ3497】 【Northwestern Europe 2007】 Assemble 组装电脑

    Assemble Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3171   Accepted: 1013 Descript ...

  3. 百度搜索附近加盟店等基于LBS云搜索功能的实现

    一.注册百度账号,进入开发者平台 创建应用并获取ak 地址如下 http://lbsyun.baidu.com/apiconsole/key/update?app-id=7546025 ok获取到了. ...

  4. android 多语言适配

    建好android项目后,默认的是有个values文件,该文件下面默认的有strings.xml. 做多语言适配的时候,就需要在创建好的项目中,右键单击res文件夹,选择创建新的xml文件. 然后点击 ...

  5. SQL-LINQ-Lambda 语法对照

    SQL LINQ Lambda  SELECT *FROM Employees from e in Employees  select e Employees .Select (e => e)  ...

  6. Spring配置扫描mybatis的mapper文件注意:

    一般会将不业务的mapper文件放到不同的包中: spring配置扫描就需要配置下面的方式(两个*): <!-- mybatis文件配置,扫描所有mapper文件 --> <bean ...

  7. Android 使用网络ADB调试.

    前提: android Phone和PC在同一局域网内. android Phone 有虚拟终端(CM系统集成了ADB网络调试,比较赞.); 1.在android phone虚拟终端输入 stop a ...

  8. Git commit template 模板设定

    多人协作开发一个项目时,版本控制工具是少不了的,git是linux 内核开发时引入的一个优秀代码管理工具,利用它能很好使团队协作完成一个项目.为了规范团队的代码提交,也方便出版本时的release n ...

  9. fltk demo

    背景: 基于microwindows nano-X上面运行fltk demo,是nano-X API 预留的fltk接口. 运行环境及程序版本: microwindows-0.89pre8 (源文件必 ...

  10. Joomla JEvents 组件

    JEvents http://extensions.joomla.org/extensions/extension/calendars-a-events/events/jevents Getting ...