理解dict的返回类型:在erlang中获取

理解dict的返回类型:在erlang中获取,erlang,Erlang,我使用两种不同的方法创建字典,然后得到结果,但我有两种不同的结果。 我想知道为什么 使用dict:append 使用dict:from_list 为什么退货类型不同? dict:append/3的文档说明: 将新值追加到与键关联的当前值列表中 当dict的值始终为列表时使用。您可以看到,Dict1是从key到[value]的dict,而Dict2是从key到value的dict: > dict:to_list(Dict1). [{key,[value]}] > dict:to_lis

我使用两种不同的方法创建字典,然后得到结果,但我有两种不同的结果。
我想知道为什么

使用dict:append

使用dict:from_list

为什么退货类型不同?

dict:append/3
的文档说明:

将新值追加到与键关联的当前值列表中

当dict的值始终为列表时使用。您可以看到,
Dict1
是从
key
[value]
的dict,而
Dict2
是从
key
value的dict:

> 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

dict:append/3
的文档说明:

将新值追加到与键关联的当前值列表中

当dict的值始终为列表时使用。您可以看到,
Dict1
是从
key
[value]
的dict,而
Dict2
是从
key
value的dict:

> 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

谢谢@Dogbert。如果我不知道字典是如何创建的,很难得到真正的值,我需要得到结果,验证是否是列表,获取元素。。。。。你知道一个简单的方法吗?。谢谢。如果值是列表,那么您希望获取列表的第一个元素,否则保留原始值?是的。正是这样。但理想情况下,我想限制每个键只有一个值。谢谢@Dogbert。如果我不知道字典是如何创建的,很难得到真正的值,我需要得到结果,验证是否是列表,获取元素。。。。。你知道一个简单的方法吗?。谢谢。如果值是列表,那么您希望获取列表的第一个元素,否则保留原始值?是的。正是这样。但理想情况下,我希望约束每个键只有一个值。