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

orddict

模块

orddict

模块摘要

键值字典作为有序列表。

描述

这个模块提供了一个Key- Value字典。An orddict是字典的表示形式,其中一对对列表用于存储键和值。该列表按照Erlang术语顺序中的键排序

该模块提供与模块相同的界面,dict(3)但具有定义的表示。一个不同之处在于,dict如果两个键不匹配(如果它们不匹配(=:=),则认为两个键不同,当且仅当它们不比较equal(==)时,该模块将两个键视为不同。

数据类型

orddict(Key, Value) = [{Key, Value}]

new/0返回的字典。

orddict() =orddict(term(), term())

输出

附加(Key,Value,Orddict1) - > Orddict2

类型

将一个新值附加到与Key关联的当前值列表中。 如果与Key关联的初始值不是值列表,则会生成异常。

另见部分Notes

append_list(Key,ValList,Orddict1) - > Orddict2

类型

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

另见部分Notes

erase(Key, Orddict1) -> Orddict2

类型

从字典中用指定的键擦除所有项。

fetch(Key, Orddict) -> Value

类型

返回键入字典Orddict的相关值。 此函数假定密钥存在于字典中。 如果密钥不在字典中,则会产生异常。

另见部分Notes

fetch_keys(Orddict) - > Keys

类型

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

take(Key, Orddict) -> {Value, Orddict1} | error

类型

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

filter(Pred, Orddict1) -> Orddict2

类型

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

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

类型

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

另见部分Notes

fold(Fun, Acc0, Orddict) -> Acc1

类型

在Orddict的连续键和值连同额外参数Acc(累加器的缩写)一起调用Fun。 函数必须返回传递给下一个呼叫的新累加器。 如果列表为空,则返回Acc0。

from_list(List) -> Orddict

类型

Key- Value列表List转换为字典。

is_empty(Orddict) -> boolean()

类型

如果Ordict没有元素,则返回true,否则返回false。

is_key(Key, Orddict) -> boolean()

类型

测试密钥是否包含在词典Orddict中。

map(Fun, Orddict1) -> Orddict2

类型

在连续的键上调用Fun并且Orddict1 tvo的值为每个键返回一个新的值。

merge(Fun, Orddict1, Orddict2) -> Orddict3

类型

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

代码语言: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() -> orddict()

创建一本新字典。

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

类型

返回一个元素的数量Orddict

store(Key, Value, Orddict1) -> Orddict2

类型

存储Key- Value对在字典中。如果Key已经存在Orddict1,关联的值被替换为Value

to_list(Orddict) -> List

类型

将字典转换为列表表示形式。

update(Key, Fun, Orddict1) -> Orddict2

类型

通过调用Fun该值来更新字典中的值以获取新值。如果Key字典中不存在,则会生成异常。

update(Key, Fun, Initial, Orddict1) -> Orddict2

类型

通过调用Fun该值来更新字典中的值以获取新值。如果Key不存在于字典中,Initial则存储为第一个值。例如,append/3可以定义如下:

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

update_counter(Key, Increment, Orddict1) -> Orddict2

类型

将增量添加到与Key关联的值并存储此值。 如果密钥不在字典中,则增量将作为第一个值存储。

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

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

注记

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

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

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

功能fetch/2如果该键已知在字典中,则为使用,否则为函数。find/2...

另见

dict(3)gb_trees(3)

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com