首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Erlang拆分元组

Erlang拆分元组
EN

Stack Overflow用户
提问于 2012-09-23 03:56:05
回答 3查看 1.5K关注 0票数 0

我想在一个dict上调用map,并得到它们的值的列表。Erlang没有内置到dict模块中,所以我是如何解决这个问题的:

代码语言:javascript
复制
Fn = fun(Tuple) ->
  [Key, Value] = Tuple,
  string:join([Key, Value], "=")
end,
lists:map(Fn, dict:to_list(Dict)).

问题是键和值会被多次赋值。如何在匿名函数对string:join的调用中“拆分”由dict:to_list返回的键/值元组

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-23 08:32:40

我不确定我是否听懂了你的要求。你说的“键和值被多次赋值”是什么意思?

当你说你想在字典上映射并取回一个值列表时,你是指"Key-Value“意义上的值吗?在这种情况下,您可以执行以下操作:

代码语言:javascript
复制
Values = [V || {_,V} <- dict:to_list(Dict)].

这将只给你一个列表的“值”方面的关键字-值性质的字典。

您也可以通过执行类似的操作来获得键的列表。

代码语言:javascript
复制
Keys = [K || {K,_} <- dict:to_list(Dict)].

如果您只想将键和值分开列出,则可以使用list:unzip/1。

代码语言:javascript
复制
{Keys, Values} = lists:unzip(dict:to_list(Dict)).

那么Keys将是所有键的列表,而Values将是所有值的列表。

或者,您是否担心KeyValue都被赋值(就像在变量赋值中一样)?如果是这样,就不要这样做。这些赋值速度很快,而且只是指针,而不是内存副本。

票数 2
EN

Stack Overflow用户

发布于 2012-09-23 04:19:09

因为你有一个元组列表,其中有一个列表作为值,所以你可能看起来像这样:

[string:join (K,V,"=") | {K,Values} <- dict:to_list(Your_dictionary),V <- Values]。

希望这能有所帮助

票数 3
EN

Stack Overflow用户

发布于 2012-09-23 04:09:15

相对较新的人,他们以前从未使用过dict模块,但这似乎对我很有效:

代码语言:javascript
复制
dict:fold(fun(Key, Value, Accum) ->
                  [Value | Accum] end, [], D).

示例:

代码语言:javascript
复制
init() ->
    Dict = dict:new(),
    Dict2 = dict:append(key, value, Dict),
    Dict3 = dict:append(key2, value2, Dict2),
    dict:append(key3, value3, Dict3).

grab_values(D) ->
    dict:fold(fun(Key, Value, Accum) ->
                      [Value | Accum] end, [], D).

已调用:

代码语言:javascript
复制
4> D = dictfold:init().
{dict,3,16,16,8,80,48,
      {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
      {{[],[],
        [[key2,value2]],
        [[key3,value3]],
        [],[],[],[],[],
        [[key,value]],
        [],[],[],[],[],[]}}}
5> dictfold:grab_values(D).
[[value2],[value3],[value]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12547223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档