2016-09-15 4 views
1

Итак, я работаю над обработкой некоторого аннотированного вывода текста. То, что я до сих пор представляет собой словарь с аннотацией как ключ и отношений массив элементов:сортировка по значению словаря в массиве python

'Adenotonsillectomy': ['0', '18', '1869', '1716'], 
'OSAS': ['57', '61'], 
'apnea': ['41', '46'], 
'can': ['94', '97', '1796', '1746'], 
'deleterious': ['103', '114'], 
'effects': ['122', '129', '1806', '1752'], 
'for': ['19', '22'], 
'gain': ['82', '86', '1776', '1734'], 
'have': ['98', '102', ['1776 1786 1796 1806 1816'], '1702'], 
'health': ['115', '121'], 
'lead': ['67', '71', ['1869 1879 1889'], '1695'], 
'leading': ['135', '142', ['1842 1852'], '1709'], 
'may': ['63', '66', '1879', '1722'], 
'obesity': ['146', '153'], 
'obstructive': ['23', '34'], 
'sleep': ['35', '40'], 
'syndrome': ['47', '55'], 
'to': ['143', '145', '1852', '1770'], 
'weight': ['75', '81'], 
'when': ['130', '134', '1842', '1758'], 
'which': ['88', '93', '1786', '1740']} 

То, что я хочу сделать, это своего рода это первым элементом в массиве, и изменить порядок Dict как:

'Adenotonsillectomy': ['0', '18', '1869', '1716'] 
'for': ['19', '22'], 
'obstructive': ['23', '34'], 
'sleep': ['35', '40'], 
'apnea': ['41', '46'], 
etc... 

сейчас я пытался использовать оператор сортировки по значению:

sorted(dependency_dict.items(), key=lambda x: x[1][0]) 

Однако выход я получаю по-прежнему неправильно:

[('Adenotonsillectomy', ['0', '18', '1869', '1716']), 
('deleterious', ['103', '114']), 
('health', ['115', '121']), 
('effects', ['122', '129', '1806', '1752']), 
('when', ['130', '134', '1842', '1758']), 
('leading', ['135', '142', ['1842 1852'], '1709']), 
('to', ['143', '145', '1852', '1770']), 
('obesity', ['146', '153']), 
('for', ['19', '22']), 
('obstructive', ['23', '34']), 
('sleep', ['35', '40']), 
('apnea', ['41', '46']), 
('syndrome', ['47', '55']), 
('OSAS', ['57', '61']), 
('may', ['63', '66', '1879', '1722']), 
('lead', ['67', '71', ['1869 1879 1889'], '1695']), 
('weight', ['75', '81']), 
('gain', ['82', '86', '1776', '1734']), 
('which', ['88', '93', '1786', '1740']), 
('can', ['94', '97', '1796', '1746']), 
('have', ['98', '102', ['1776 1786 1796 1806 1816'], '1702'])] 

Я не уверен, что происходит не так. Любая помощь приветствуется.

ответ

5

Записи сортируются в алфавитном порядке. Если вы хотите отсортировать их по целочисленному значению, сначала преобразуйте значение в int:

sorted(dependency_dict.items(), key=lambda x: int(x[1][0])) 
+0

Ах спасибо! Да, я забыл бросить. Это сделал трюк. – jdv12

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