-3

以下に示すサンプル データ (ファイルに保存されています) では、「アイテム」カテゴリごとに異なる「ID」を可能な限り高速な方法で見つける必要があります。これを行うには、各行を調べてからすべてのアイテム セットを見つけてカウントしますが、'Counter' や 'itemgetter' などのより高速な方法を探しています。

「infile.txt」

id  item
444 Anemia
444 liver
444 Anemia
444 Anemia
222 liver
222 pancreas
222 liver
222 Anemia
444 pancreas
444 pancreas
444 Anemia
001 Iiver
001 pancreas
111 pancreas
111 liver
111 liver
111 pancreas
555 pancreas
555 liver
555 pancreas
555 liver
555 pancreas
555 liver

次のような出力が必要です

item    count   ids
pancreas    5   001, 111, 222, 444, 555
liver   5   111,222,444,555,001
Anemia  2   222,444
4

1 に答える 1

3

私はdefaultdictをset

from collections import defaultdict
d = defaultdict(set)
with open(datafile) as f:
    for line in f:
        my_id,item = line.split()
        d[item].add(my_id)

for item in d:
    print item,len(d[item]),sorted(d[item])
于 2012-10-10T19:45:55.607 に答える