查找具有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 | | XCalculating
listcomp
两次?现在我将此计算引入一个函数。: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}