0

まず第一に、あいまいさを許してください。私の問題は英語で説明するのが少し難しいと思います。基本的に私がやりたいことは、膨大な単語のセットを「N」個の部分に分割することです。

たとえば、ファイル内のすべての単語を読み取り、それらを N=10 の部分に分割します。より正確に言うと、私はデータ マイニング プロジェクトに取り組んでいます。の単語を並べ替える必要があるドキュメントは何千もあります。

n = 2 とします。am と nz をファイルに入れることができることを知っています。n > 100 に対してこれを実行できるアルゴリズムが必要です。

PS: 私のプログラムは最初に N 個のファイル (またはチャンク) を作成し、次にすべての単語を読み取り、開始方法に応じてそれらをチャンクの 1 つに割り当てる必要があります。

例 : 入力 : N = 2 語 = [....]

output : [amで始まる単語] , [nzで始まる単語]

言い換えれば、単語を辞書順に分割したい

4

2 に答える 2

1

これはあなたが望むものの大まかな考えです:

l = "i find my problem a bit hard to explain in English".split()
n = 2
ln = len(l)
chnk = ln / n
srt = sorted(l, key=str.lower) # use str.lower as the key or uppercase will come before lower
chunks = (srt[i:chnk+i] for i in xrange(0, len(srt), chnk))

In [4]: l = "i find my problem a bit hard to explain in English".split()
In [5]: n = 2    
In [6]: ln = len(l)
In [7]: chnk = ln / n    
In [8]: srt = sorted(l, key=str.lower)
In [9]: chunks = (srt[i:chnk+i] for i in xrange(0, len(srt), chnk))    
In [10]:     
In [10]: for chunk in chunks:
   ....:         print(chunk)
   ....:     
['a', 'bit', 'English', 'explain', 'find']
['hard', 'i', 'in', 'my', 'problem']
['to']

明らかに、n チャンクが単語リストの長さに均等に分割されない場合を処理する必要があります。

于 2014-12-14T11:19:53.957 に答える
-1

使用できますitertools

from itertools import islice

# islice('ABCDEFG', 2) --> A B
# islice('ABCDEFG', 2, 4) --> C D
# islice('ABCDEFG', 2, None) --> C D E F G
# islice('ABCDEFG', 0, None, 2) --> A C E G

your_dict=[1,2,3,4,5]
first_chunk=islice(your_dict,2) #--> 1 2
second_chunk=islice(your_dict,2,None) #--> 3 4 5

isliceその後、wrap'em into 関数の 2 番目と 3 番目の引数で遊ぶことができます。

于 2014-12-14T11:19:40.877 に答える