2017-02-13 6 views
0

を対応する添付I項目ごとに3つの要素を持つリストを持って、それは次のようになります。カウントリスト全体における用語の出現回数、および変数

list_A = [(['apple','orange','banana'], 2,0.1), 
      (['grape', 'water', 'fountain'], 4, 0.2), 
      (['apple', 'grape', 'banana',], 6, 0.3), 
      (['orange', 'water', 'apple',], 8, 0.4),...] 

まず、私がしたいです期間の出現ごとにを数えてから、対応する変数を添付して新しいリストを作成します。例えば

最初の行を参照)、用語(「リンゴ」)のための発生数はその2つの対応する変数が一緒に取り付けられて、リスト全体であります。結果は次のようにする必要があります:

new_list = [('apple', 3, 2, 0.1), 
      ('apple', 3, 6, 0.3), 
      ('apple', 3, 8, 0.4), 
      ('orange', 2, 2, 0.1), 
      ('banana', 2, 2, 0.1), 
      ('grape', 2, 4, 0.2), 
      ('water', 2, 4, 0.2),......] 

私がしようとここfrom collections import Counter

答えて

2

を使用して、この機能Counter(x[0] for elem in each)とそれを得るために微調整してきたそれを行うための一つの方法です:

ここ
from collections import Counter 

counts = Counter(sum((row[0] for row in list_A), [])) 

for row in list_A: 
    print [(el, counts[el]) + row[1:] for el in row[0]] 

sum((row[0] for row in list_A), [])は、文字列サブリストを1つにマージします。残りはかなり明白でなければなりません。

+0

! – htetmyet

1

このバージョンでは、関数の手法を使用してタプルのリストから文字列を抽出します。多くのあなたの迅速な対応のために感謝

from collections import Counter 
from itertools import chain 
from operator import itemgetter 

list_A = [ 
    (['apple', 'orange', 'banana'], 2, 0.1), 
    (['grape', 'water', 'fountain'], 4, 0.2), 
    (['apple', 'grape', 'banana',], 6, 0.3), 
    (['orange', 'water', 'apple',], 8, 0.4), 
] 

counts = Counter(chain.from_iterable(map(itemgetter(0), list_A))) 

new_list = [] 
for row in list_A: 
    head, tail = row[0], row[1:] 
    for u in head: 
     new_list.append((u, counts[u]) + tail) 

new_list.sort() 
for row in new_list: 
    print(row) 

出力

('apple', 3, 2, 0.1) 
('apple', 3, 6, 0.3) 
('apple', 3, 8, 0.4) 
('banana', 2, 2, 0.1) 
('banana', 2, 6, 0.3) 
('fountain', 1, 4, 0.2) 
('grape', 2, 4, 0.2) 
('grape', 2, 6, 0.3) 
('orange', 2, 2, 0.1) 
('orange', 2, 8, 0.4) 
('water', 2, 4, 0.2) 
('water', 2, 8, 0.4) 
+0

解決に感謝します:) – htetmyet

+0

@htetmyet心配しないでください。私は仕事を始めましたが、その後中断しました。私が戻ってきたら、NPEが解決策を投稿しましたが、とにかく少し違ったアプローチに興味があると思いました。 :) –