首先请原谅我的任何歧义。我发现我的问题有点难以用英语解释。 基本上我想要做的是,将一大堆单词划分为“N”部分。
例如,读取文件中的所有单词,然后将它们分成N = 10个部分。 更准确地说,我正在从事数据挖掘项目。我需要对数千个文件进行排序。
说n = 2。我知道我可以把a-m和n-z放在一个文件中。我需要一种算法可以为n>做到这一点。 100。
PS:我的程序FIRST必须创建N个文件(或块)然后读取所有单词并根据它们的开始方式,将它们分配给其中一个块。
示例: 输入: N = 2 words = [....]
输出: [以a-m开头的单词],[以n-z开头的单词]
换句话说,我想用词典式划分词语
答案 0 :(得分: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个块没有均匀分配到单词列表的长度时,你将不得不处理这个案例。
答案 1 :(得分:-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
第二个和第三个参数播放函数,