复合类型之字典
- 和其他语言一样, 字典保存键值对; 可以通过键, 快速找到值; 字典里的键值对是无序存储的.
- 字典是引用对象,在传递时, 需要不想改变原对象,最好使用copy(), 传递拷贝.
- 字典的键必须是字符串, 其中’04’ 和 04 是不同的字符串, 后面会转换为 ‘4’;
- 值可以是任何表达式;
建立字典
1 | let dic_test = {'one': 'ding', 'two': 'liu', 'three': 'jiang'} |
字典与列表的转换
1 | " 可以得到键列表 |
字典同一
- 字典也是引用类型, 需要用copy() 和 deepcopy()构造字典的备份, 否则赋值等产生的结果会引用同一对象.
1 | let onedict = ['a': 1, 'b': 2] |
字典修改
- 要修改字典已经存在的项目或增加新的项目,用let:
1 | let dict[4] = 'four' |
- 字典里面删除项目用remove() 或unlet:
1 | let i = remove(dict, 'aaa') |
- 字典合并
1 | call extend(adict, bdict) |
这使得adict得到扩展, 加入所有的bdict项目; 对于重复的键, adict项目会被覆盖;可选的第三个参数可以该百年此点.
- 字典里面删除多个项目可以用filter():
1 | call filter(dict, 'v:val =~ "x"') |
字典函数
- 简单的取值
1 | " 取值的方法 |
- 定义函数并将它的引用放在字典中
1 | function dic_test.translate(line) dict |
join() 函数与split()函数相反, 它合并单词, 中间放分隔符; 经常使用split(), map(), join() 对单词组成的行进行过滤.
字典相关函数
1 | if has_key(dict, 'foo') " 如果 dict 有带 "foo" 键的项目则为真 |