2016-07-01 3 views
1

나는 튜플의 목록이 있습니다튜플 목록에서 요소를 포함하는 튜플을 추출하는 방법은 무엇입니까?

[{denomination_flexible_denomination,236,9,2,"1","CORE BALANCE",0,10,"1","500","100","100",null,"ecrlrlep_facilito","ecrlrlep_facilito","true","[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10220\"}, {tipo_trx_consulta, \"310220\"}, {payment_type, \"electronic_money\"}]"}, 
{denomination_flexible_denomination,239,8,2,"2","CORE BALANCE",0,10,"1","500","100","100",null,"ecrlrlep_facilito","ecrlrlep_facilito","true","[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10120\"}, {tipo_trx_consulta, \"310120\"}, {payment_type, \"electronic_money\"}]"}] 

을하고 난 denomination_flexible_denomination 239 누군가가 그 작업을 수행하는 방법을 알고 있나요 들어있는 튜플을 추출 할 필요가?

답변

4

lists:keyfind/3을 사용하십시오. (이것은 제 튜플 요소로서, 2) 상기 튜플리스트 인수는 튜플의 위치 (이 경우, 239)의 열쇠 :

> lists:keyfind(239, 2, TupleList). 
{denomination_flexible_denomination,239,8,2,"2", 
            "CORE BALANCE",0,10,"1","500","100","100",null, 
            "ecrlrlep_facilito","ecrlrlep_facilito","true", 
            "[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10120\"}, {tipo_trx_consulta, \"310120\"}, {payment_type, \"electronic_money\"}]"} 

일치 요소 lists:keyfind/3 되돌아가 없으면 false.

0

lists:filter

TupleList = [{denomination_flexible_denomination,236,9,2,"1","CORE BALANCE",0,10,"1","500","100","100",null,"ecrlrlep_facilito","ecrlrlep_facilito","true","[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10220\"}, {tipo_trx_consulta, \"310220\"}, {payment_type, \"electronic_money\"}]"},{denomination_flexible_denomination,239,8,2,"2","CORE BALANCE",0,10,"1","500","100","100",null,"ecrlrlep_facilito","ecrlrlep_facilito","true","[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10120\"}, {tipo_trx_consulta, \"310120\"}, {payment_type, \"electronic_money\"}]"}]. 

R=lists:filter(fun(Tuple)->(element(1,Tuple)=:=denomination_flexible_denomination) and (element(2,Tuple)=:=239) end,TupleList). 
0
1> L = [{denomination_flexible_denomination,236,9,2,"1","CORE BALANCE",0,10,"1","500","100","100",null,"ecrlrlep_facilito","ecrlrlep_facilito","true","[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10220\"}, {tipo_trx_consulta, \"310220\"}, {payment_type, \"electronic_money\"}]"}, 
1> {denomination_flexible_denomination,239,8,2,"2","CORE BALANCE",0,10,"1","500","100","100",null,"ecrlrlep_facilito","ecrlrlep_facilito","true","[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10120\"}, {tipo_trx_consulta, \"310120\"}, {payment_type, \"electronic_money\"}]"}]. 
[{denomination_flexible_denomination,236,9,2,"1", 
            "CORE BALANCE",0,10,"1","500","100","100",null, 
            "ecrlrlep_facilito","ecrlrlep_facilito","true", 
            "[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10220\"}, {tipo_trx_consulta, \"310220\"}, {payment_type, \"electronic_money\"}]"}, 
{denomination_flexible_denomination,239,8,2,"2", 
            "CORE BALANCE",0,10,"1","500","100","100",null, 
            "ecrlrlep_facilito","ecrlrlep_facilito","true", 
            "[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10120\"}, {tipo_trx_consulta, \"310120\"}, {payment_type, \"electronic_money\"}]"}] 
2> [ X || {denomination_flexible_denomination, 239, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_} =X <- L].    
[{denomination_flexible_denomination,239,8,2,"2", 
            "CORE BALANCE",0,10,"1","500","100","100",null, 
            "ecrlrlep_facilito","ecrlrlep_facilito","true", 
            "[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10120\"}, {tipo_trx_consulta, \"310120\"}, {payment_type, \"electronic_money\"}]"}] 

또는

3> [ X || X <- L, element(1,X) =:= denomination_flexible_denomination, element(2, X) =:= 239]. 
[{denomination_flexible_denomination,239,8,2,"2", 
            "CORE BALANCE",0,10,"1","500","100","100",null, 
            "ecrlrlep_facilito","ecrlrlep_facilito","true", 
            "[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10120\"}, {tipo_trx_consulta, \"310120\"}, {payment_type, \"electronic_money\"}]"}] 

또는

4> list_to_tuple([ list_to_atom("field_" ++ integer_to_list(X)) || X <- lists:seq(1,16) ]). 
{field_1,field_2,field_3,field_4,field_5,field_6,field_7, 
     field_8,field_9,field_10,field_11,field_12,field_13, 
     field_14,field_15,field_16} 
5> rd(denomination_flexible_denomination, v(-1)).            
denomination_flexible_denomination 
6> [ X || #denomination_flexible_denomination{field_1 = 239} = X <- L]. 
[#denomination_flexible_denomination{field_1 = 239, 
            field_2 = 8,field_3 = 2,field_4 = "2", 
            field_5 = "CORE BALANCE",field_6 = 0,field_7 = 10, 
            field_8 = "1",field_9 = "500",field_10 = "100", 
            field_11 = "100",field_12 = null, 
            field_13 = "ecrlrlep_facilito", 
            field_14 = "ecrlrlep_facilito",field_15 = "true", 
            field_16 = "[{codigo_producto, \"0010701020\"}, {tipo_trx_pago, \"10120\"}, {tipo_trx_consulta, \"310120\"}, {payment_type, \"electronic_money\"}]"}] 
를 사용하는 가장 쉬운 방법
관련 문제