2014-01-16 3 views
-6

Я ищу помощь в создании кластера предметов в списке на основе баллов ассоциации. Чтобы объяснить это, см. Ниже объект словаря и нужный список, который я ищу для создания;Сортировка списка на основе связанных баллов

Defintion из dict объекта:

strScoresDict[uniqueID] = (itemElement1, itemElement2, associatedScore) 

Пример:

('item1', 'item2', 100) 

('item1', 'item3', 40) 

('item1', 'item4', 80) 

('item2', 'item3', 40) 

('item2', 'item4', 100) 

('item3', 'item4', 20) 

отсортированный список;

('item1', 'item2', 'item4', 'item3') 

Мой список целей может иметь более чем 1000 записей

Ассоциация оценка формируется на основе бизнес-логики и конкретных диапазон нот фиксируется между 0 и 100.

+0

Вы должны улучшить описание своей проблемы, что именно (например) вы ожидаете получить. – elyase

+0

Я не уверен в правильности сортировки словаря. – YaleCheung

+0

Результат, который я ищу, должен проверить вес оценки ассоциации и сгруппировать предметы с наивысшим результатом. Как показано на рисунке выше, например, item1 и item2 тесно связаны, поэтому item2 следует за пунктом 1, но item2 и item3 имеют более низкий коэффициент ассоциации, сравниваемый с пунктом item2 и item4, поэтому последовательность должна вытолкнуть item3 под пунктом4. Надеюсь, что это поможет прояснить вывод, который я ищу. – ipyinwild

ответ

0

Я хотел бы подойти к этому следующим образом:

from collections import defaultdict # using defaultdict makes the sums easier 

correlations = defaultdict(int) # default to int (i.e. 0) 

for i1, i2, correl in strScoresDict: # loop through data 
    correlations[i1] += correl # add score for first item 
    correlations[i2] += correl # and second item 

output = sorted(correlations, 
       key=lambda x: correlations[x], 
       reverse=True) # sort keys by value 

Однако следует отметить, что выход

output == ['item2', 'item1', 'item4', 'item3'] 

Поскольку суммарные корреляции

{'item1': 220, 'item3': 100, 'item2': 240, 'item4': 200} 

Вы можете read about defaultdict here.

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