2016-09-23 12 views
-1

Я пытаюсь найти способ преобразования списка в dict_keys() в целое число, поэтому я могу использовать его в качестве триггера для отправки в другую систему. Мой код (ниже) импортирует список из 100 слов (txt-файл со словами каждый в новой строке), которые относятся к 10 категориям (например, первые 10 слов относятся к категории 1, а остальные 10 слов относятся к категории 2 и т. Д.).).Как преобразовать список dict_keys в целые числа

Код:

from numpy.random import choice 
from collections import defaultdict 

number_of_elements = 10 

Words = open('file_location').read().split() 

categories = defaultdict(list) 
for i in range(len(words)): 
    categories[i/number_of_elements].append(words[i]) 

category_labels = categories.keys() 

category_labels 

Выход

dict_keys([0.0, 1.1, 2.0, 3.0, 4.9, 5.0, 0.5, 1.9, 8.0, 9.0, 1.3, 2.7, 3.9, 9.2, 9.4, 7.2, 4.2, 8.6, 5.1, 5.4, 3.3, 1.0, 6.6, 7.4, 7.7, 8.4, 5.8, 9.8, 0.7, 8.8, 2.1, 7.0, 6.4, 4.3, 0.1, 2.5, 3.8, 1.2, 6.9, 7.1, 5.6, 0.4, 5.3, 2.9, 7.3, 3.5, 9.5, 8.2, 2.8, 3.1, 0.9, 2.3, 8.1, 4.0, 6.3, 6.7, 4.5, 0.2, 1.7, 2.2, 8.9, 1.4, 7.6, 9.1, 7.8, 5.5, 4.8, 0.6, 3.2, 2.4, 6.5, 9.9, 9.6, 1.5, 6.0, 3.7, 4.7, 3.4, 5.9, 4.1, 1.6, 6.8, 9.3, 3.6, 8.5, 8.7, 0.3, 0.8, 7.5, 5.2, 2.6, 4.6, 5.7, 7.9, 6.1, 1.8, 8.3, 6.2, 9.7, 4.4]) 

Что мне нужно:

Я хотел бы первый номер до точки (например, если он был 6,7 , Я просто хочу, чтобы 6 как int).

Заранее благодарю за помощь и/или совет!

ответ

4

Просто конвертируйте свои ключи в целые числа, используя понимание списка; обратите внимание, что нет необходимости вызывать .keys() здесь итерации над словарем непосредственно достаточно:

[int(k) for k in categories] 

Вы можете ведро своих значений непосредственно в целые категории, а не значение с плавающей точкой:

categories = defaultdict(list) 
for i, word in enumerate(words): 
    categories[int(i/number_of_elements)].append(word) 

Я использовал enumerate() для соединения слов с их индексом, вместо использования range() плюс индексация обратно в words.

+0

'0,5 == 0' и' 0.0 == 0' теряют данные при дублировании ключа! Вопрос получил плохую идею и ответ на вопрос .... – dsgdfg

+0

@dsgdfg: вот почему OP * может * хотеть ведро целыми значениями. Однако, где в коде данные потеряны? –

+0

Хорошо, что вы 'Истинный', но теряете индекс после этого. Как использовать/сравнивать значения после? – dsgdfg

Смежные вопросы