2015-10-29 4 views
1

Я пытаюсь сортировать словарь, и я просмотрел множество примеров, но все они показывают очень простые словари. Я посмотрел на orderedDict, itemgetter, лямбда и т.д., но я не могу видеть, как сортировать этот словарь либо позиции, homepoints или awaypoints:Сортировка словаря с несколькими значениями

{ 
    u'SwanseaCityFC': { 
     'position': 12, 
     'awayPoints': 7, 
     'homePoints': 8 
    }, 
    u'TottenhamHotspurFC': { 
     'position': 6, 
     'awayPoints': 11, 
     'homePoints': 9 
    }, 
    u'StokeCityFC': { 
     'position': 14, 
     'awayPoints': 9, 
     'homePoints': 4 
    }, 
    u'AstonVillaFC': { 
     'position': 20, 
     'awayPoints': 4, 
     'homePoints': 1 
    }, 
    u'ManchesterCityFC': { 
     'position': 1, 
     'awayPoints': 10, 
     'homePoints': 12 
    }, 
    u'AFCBournemouth': { 
     'position': 17, 
     'awayPoints': 5, 
     'homePoints': 5 
    }, 
    u'CrystalPalaceFC': { 
     'position': 7, 
     'awayPoints': 9, 
     'homePoints': 6 
    }, 
    u'NewcastleUnitedFC': { 
     'position': 19, 
     'awayPoints': 3, 
     'homePoints': 5 
    }, 
    u'NorwichCityFC': { 
     'position': 16, 
     'awayPoints': 6, 
     'homePoints': 4 
    }, 
    u'WatfordFC': { 
     'position': 13, 
     'awayPoints': 10, 
     'homePoints': 5 
    }, 
    u'ManchesterUnitedFC': { 
     'position': 4, 
     'awayPoints': 11, 
     'homePoints': 11 
    }, 
    u'LeicesterCityFC': { 
     'position': 5, 
     'awayPoints': 10, 
     'homePoints': 10 
    }, 
    u'ChelseaFC': { 
     'position': 15, 
     'awayPoints': 5, 
     'homePoints': 7 
    }, 
    u'WestHamUnitedFC': { 
     'position': 3, 
     'awayPoints': 14, 
     'homePoints': 7 
    }, 
    u'SunderlandAFC': { 
     'position': 18, 
     'awayPoints': 3, 
     'homePoints': 5 
    }, 
    u'SouthamptonFC': { 
     'position': 8, 
     'awayPoints': 8, 
     'homePoints': 7 
    }, 
    u'EvertonFC': { 
     'position': 11, 
     'awayPoints': 10, 
     'homePoints': 5 
    }, 
    u'LiverpoolFC': { 
     'position': 9, 
     'awayPoints': 8, 
     'homePoints': 8 
    }, 
    u'ArsenalFC': { 
     'position': 2, 
     'awayPoints': 13, 
     'homePoints': 10 
    }, 
    u'WestBromwichAlbionFC': { 
     'position': 10, 
     'awayPoints': 11, 
     'homePoints': 4 
    } 
} 

Любая помощь приветствуется!

+1

'dict' не сохраняются, поэтому вам нужно создать список или использовать OrderedDict только для поддержания порядка элементов. Ввод элементов в порядок требует ключевой функции. Я думаю, что здесь есть несколько отличных примеров: https://wiki.python.org/moin/HowTo/Sorting – RobertB

+0

[This] (http://stackoverflow.com/questions/9001509/how-can-i-sort-a -dictionary-by-key) не решает вашу проблему ?! – Cleb

+0

Структура данных Python dict не имеет неотъемлемого порядка. Возможно, вам стоит рассмотреть структуру типа dataframe (Pandas). – jgloves

ответ

0

Перейти к документации collections и вы можете увидеть реализацию OrderedDict отмечает https://docs.python.org/3/library/collections.html#collections.OrderedDict

Существует пример, как показано ниже:

>>> # dictionary sorted by value 
>>> OrderedDict(sorted(d.items(), key=lambda t: t[1])) 
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)]) 

, которые затем можно продлить на ваше использование:

>>> d = {'banana':{'key':3},'apple':{'key':4}, 'pear': {'key':1}, 'orange': {'key':2}} 
>>> OrderedDict(sorted(d.items(), key=lambda t: t[1]['key'])) 
OrderedDict([('pear', {'key': 1}), ('orange', {'key': 2}), ('banana', {'key': 3}), ('apple', {'key': 4})]) 
Смежные вопросы