dict
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,并使用这两个值返回新值。 合并可以定义如下,但更快:
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可以定义为:
append(Key, Val, D) ->
update(Key, fun (Old) -> Old ++ [Val] end, [Val], D).
update_counter(Key, Increment, Dict1) -> Dict2
类型
添加Increment
到与此值关联Key
并存储该值的值。如果Key
不存在于字典中,Increment
则存储为第一个值。
这可以定义如下,但速度更快:
update_counter(Key, Incr, D) ->
update(Key, fun (Old) -> Old + Incr end, Incr, D).
注记
功能append
和append_list
,以便将键控值存储在列表中。累加器
,例如:
> 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)