查找具有Erlang列表理解的元素
我有一个列表,其中包含一个元组,其中包含一个列表和一个原子。例如:查找具有Erlang列表理解的元素,erlang,tuples,list-comprehension,record,Erlang,Tuples,List Comprehension,Record,我有一个列表,其中包含一个元组,其中包含一个列表和一个原子。例如: List = [{[#{aem => "sara",age => "12"},#{aem => "hanna",age => "11"}], blah}, {[#{aem => "han",age => "12"},#{aem => "anna",age => "21"}], blah1}]. 我想获取与aem==“sara”匹配的记录,并在结果中包含元组中的第二
List = [{[#{aem => "sara",age => "12"},#{aem => "hanna",age => "11"}], blah},
{[#{aem => "han",age => "12"},#{aem => "anna",age => "21"}], blah1}].
我想获取与aem==“sara”
匹配的记录,并在结果中包含元组中的第二个元素(在本例中为blah
)
所需结果:
{[#{aem=>“sara”,age=>“12”],等等}
您可以按如下方式拆分第二个列表:
-module(foo).
-compile(export_all).
start()->
List = [{[#{aem => "sara",age => "12"},
#{aem => "hanna",age => "11"}], "blah"},
{[#{aem => "han",age => "12"},
#{aem => "anna",age => "21"}], "blah1"}],
listcomp(List).
listcomp([]) -> [];
listcomp([{P, Dir} | T]) ->
case [X || X <- P, maps:get(aem, X) == "sara" ] of
[] -> listcomp(T);
Res -> [{Res, Dir} | listcomp(T)]
end.
-模块(foo)。
-编译(全部导出)。
开始()->
列表=[{aem=>“sara”,年龄=>“12”},
#{aem=>“汉娜”,年龄=>“11”}],“诸如此类”},
{[#{aem=>“han”,age=>“12”},
#{aem=>“安娜”,年龄=>“21”}],“blah1”}],
listcomp(列表)。
listcomp([])->[];
listcomp([{P,Dir}|T])->
案例[X | | X listcomp(T);
Res->[{Res,Dir}| listcomp(T)]
结束。
1>列表=[{{{aem=>“sara”,age=>“12”},{aem=>“hanna”,age=>“11”},诸如此类,
1> {[{aem=>“han”,age=>“12”},{aem=>“anna”,age=>“21”},blah1}]。
[{{aem=>“莎拉”,年龄=>“12”},
#{aem=>“汉娜”,年龄=>“11”},
诸如此类,
{[{aem=>“han”,age=>“12”},{aem=>“anna”,age=>“21”}],
blah1}]
2> [{L,Y}|{X,Y}如果您可以假设aem
s在某种程度上是唯一的(至少在每个人群中):
但是,为了精确匹配您的预期结果,您只需要从该列表中选择一个元素。您可以使用hd/1
(如果您知道您将始终至少拥有一个元素,或者如果您不:
1> hd([{[Person], Atom} || {People, Atom} <- List, Person = #{aem := "sara"} <- People].
{[#{aem => "sara",age => "12"}],blah}
1>hd([{[Person],Atom}{People,Atom}“12}],等等)
[{[X | | XCalculatinglistcomp
两次?现在我将此计算引入一个函数。:D
[{[Person], Atom} || {People, Atom} <- List, Person = #{aem := "sara"} <- People].
[{[#{aem => "sara",age => "12"}],blah}]
1> hd([{[Person], Atom} || {People, Atom} <- List, Person = #{aem := "sara"} <- People].
{[#{aem => "sara",age => "12"}],blah}