我使用两种不同的方式创建字典,然后得到结果,但是有两种不同的结果。
我想知道为什么。
使用 dict:append
Dict1 = dict:append(key, value, dict:new()).
dict:fetch(key, Dict1).
% I get a list with the value
[value]
使用 dict:from_list
Dict2 = dict:from_list([{ key, value }]).
dict:fetch(key, Dict2).
% I get the value
value
为什么返回类型不同?
fetch doc
答案 0 :(得分:6)
dict:append/3
的文档说:
将新值添加到与键关联的当前值列表中。
它是用于dict的值始终为列表时使用的。您可以看到Dict1
是从key
到[value]
的字典,而Dict2
是从key
到value
的字典:
> dict:to_list(Dict1).
[{key,[value]}]
> dict:to_list(Dict2).
[{key,value}]
如果您想按原样存储值而不是将其存储在列表中,则可以使用dict:store/3
:
> Dict3 = dict:store(key, value, dict:new()).
{dict,1,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],[],[],[],[],[],[],
[[key|value]],
[],[],[],[],[],[]}}}
> dict:fetch(key, Dict3).
value