Свинья: как разделить массив

у меня есть такой кортеж:

((item114,),1)
((item32,item31,),1)
((item81,item27,),2)

последнее число - это частота элемента, поэтому элемент 114 имеет частоту. из 1, пункт 81 имеет частоту. из 2, теперь я хочу разделить его на кортеж формата: (item#, freq.), поэтому результат будет таким:

 (item114, 1)
 (item32, 1)
 (item31, 1)
 (item81, 2)
 (item27, 2)

Как я могу это сделать? Спасибо.


person ohana    schedule 15.04.2011    source источник


Ответы (1)


Вы можете существенно сгладить отношение, которое даст вам желаемый кортеж. Например, пусть C описывает приведенное выше отношение следующим образом:

C = GROUP input by A;

describe C;
C: {group: int, input: {i: int,j: int,k: int}}

dump C;
({(item114,)},1)

d = foreach c generate group, flatten(a.i);

describe d;
d: {group: int,i::i: int}

dump d;
(item114, 1)
(item32, 1)
person phoenix24    schedule 18.04.2011
comment
@phonix24: в вашем примере, что такое ввод и что такое A? - person ohana; 18.04.2011