首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

dict

模块

dict

模块摘要

键值字典

描述

此模块提供了一个Key---Value字典。没有定义字典的表示形式。

该模块提供与模块相同的接口orddict(3)。一个区别是,虽然这个模块如果不匹配(=:=)时orddict认为两个密钥不同,但只要它们不比较equal(==),就认为两个密钥不同。

数据类型

dict(Key, Value)

返回的字典new/0...

dict() =dict(term(), term())

输出

append(Key, Value, Dict1) -> Dict2

类型

Value在与当前值关联的列表中追加一个新值Key

另见部分Notes

append_list(Key, ValList, Dict1) -> Dict2

类型

将值列表追加ValList到与当前值相关的值列表中Key。如果与之相关的初始值Key不是值列表,则会生成异常。

另见部分Notes...

erase(Key, Dict1) -> Dict2

类型

从字典中删除所有具有给定密钥的项。

fetch(Key, Dict) -> Value

类型

返回与Key词典中相关的值Dict。该函数假定Key存在于字典中Dict,并且如果Key不在字典中则会生成异常。

另见部分Notes...

fetch_keys(Dict) -> Keys

类型

返回字典中所有键的列表Dict

take(Key, Dict) -> {Value, Dict1} | error

类型

此函数返回字典中的值和不带此值的新字典。如果密钥不在字典中,则返回error

filter(Pred, Dict1) -> Dict2

类型

Dict2是Dict1中Pred(Key,Value)为真的所有键和值的字典。

find(Key, Dict) -> {ok, Value} | error

类型

在字典词典中搜索密钥。 返回{ok,Value},其中Value是与Key关联的值,或者如果该关键字不存在于字典中,则返回错误。

另见部分Notes...

old(Fun, Acc0, Dict) -> Acc1

类型

在字典Dict的连续键和值上连同额外参数Acc(累加器的缩写)一起调用Fun。 乐趣必须返回传递给下一个呼叫的新累加器。 如果字典为空,则返回Acc0。 评估顺序未定义。

from_list(List) -> Dict

类型

转换Key---Value列单List词典Dict...

is_empty(Dict) -> boolean()

类型

如果字典Dict没有元素,则返回true,否则返回false。

is_key(Key, Dict) -> boolean()

类型

测试如果Key包含在字典中Dict...

map(Fun, Dict1) -> Dict2

类型

在连续的键和字典Dict1的值上调用Fun以为每个键返回一个新值。 评估顺序未定义。

merge(Fun, Dict1, Dict2) -> Dict3

类型

合并两个字典Dict1和Dict2,以创建一个新字典。 来自两个词典的所有键值对都包含在新词典中。 如果在两个字典中都出现密钥,则使用密钥调用Fun,并使用这两个值返回新值。 合并可以定义如下,但更快:

代码语言:javascript
复制
merge(Fun, D1, D2) ->
    fold(fun (K, V1, D) ->
                 update(K, fun (V2) -> Fun(K, V1, V2) end, V1, D)
         end, D2, D1).

new() -> dict()

创建一本新字典。

size(Dict) -> integer() >= 0

类型

返回字典中元素的数量Dict

store(Key, Value, Dict1) -> Dict2

类型

在词典Dict2中存储键值对。 如果Key已经存在于Dict1中,则相关值将被替换为Value。

to_list(Dict) -> List

类型

将字典转换Dict为列表表示。

update(Key, Fun, Dict1) -> Dict2

类型

通过调用Fun在这个值上得到一个新的值。如果出现异常,则生成异常。Key不在字典里。

update(Key, Fun, Initial, Dict1) -> Dict2

类型

通过对该值调用Fun来更新字典中的值以获取新值。 如果字典中不存在密钥,则初始值将作为第一个值存储。 例如,append / 3可以定义为:

代码语言:javascript
复制
append(Key, Val, D) ->
    update(Key, fun (Old) -> Old ++ [Val] end, [Val], D).

update_counter(Key, Increment, Dict1) -> Dict2

类型

添加Increment到与此值关联Key并存储该值的值。如果Key不存在于字典中,Increment则存储为第一个值。

这可以定义如下,但速度更快:

代码语言:javascript
复制
update_counter(Key, Incr, D) ->
    update(Key, fun (Old) -> Old + Incr end, Incr, D).

注记

功能appendappend_list,以便将键控值存储在列表中。累加器,例如:

代码语言:javascript
复制
> D0 = dict:new(),
  D1 = dict:store(files, [], D0),
  D2 = dict:append(files, f1, D1),
  D3 = dict:append(files, f2, D2),
  D4 = dict:append(files, f3, D3),
  dict:fetch(files, D4).
[f1,f2,f3]

这样就省去了首先获取键控值、在存储值列表中追加新值和存储结果的麻烦。

如果已知密钥在字典中,则使用函数提取,否则使用函数查找。

另见

gb_trees(3)orddict(3)

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com