У меня есть словарь с парами значений ключа sentence_ID
и cluster_ID
соответственно.Как ускорить итерацию через большой словарь
Это формат: {sentence_ID : cluster_ID}
Пример:
my_id_dict:
{0: 71,
1: 63,
2: 66,
3: 92,
4: 49,
5: 85
.
.}
В общей сложности, у меня есть 200000 над sentence_IDs и 100 cluster_IDs.
Я пытаюсь зациклиться на my_id_dict
, чтобы сгенерировать список предложений предложений для каждого кластера.
Пример выходных я хочу:
Cluster 0
[63, 71, 116, 168, 187, 231, 242, 290, 330, 343]
Cluster 1
[53, 107, 281, 292, 294, 313, 353, 392, 405, 479]
Это код, который я использовал:
Логика в том, что для каждого кластера, создать список предложения, то для CLUSTER_ID во всех 200000. над Dict значения, если значения dict = текущий индекс кластера, напишите идентификатор предложения в список предложений.
Продолжить в течение 100 раз.
cluster_dict = defaultdict(list)
num_clusters = 100
for cluster in xrange(0,num_clusters):
print "\nCluster %d" % cluster
sentences = []
for i in xrange(0,len(my_id_dict.values())):
if(my_id_dict.values()[i] == cluster):
sentences.append(my_id_dict.keys()[i])
cluster_dict[cluster] = sentences
print sentences[:10]
Это работает, но ужасно медленно. Есть ли более быстрый способ, которым я могу это сделать?