2012-08-01 15 views
14

İç içe bir sözlüğün iç değerini temel alarak bir Python sözlüğünü nasıl sıralarsınız? Örneğinİç içe sözlük değerlerine göre Python sözlüğünü sıralama

, context değerine göre aşağıda sıralamak mydict:

mydict = { 
    'age': {'context': 2}, 
    'address': {'context': 4}, 
    'name': {'context': 1} 
} 

sonuç böyle olmalı: olursa olsun denemek ne kadar zor bir sözlük sıralayamazsınız

{ 
    'name': {'context': 1}, 
    'age': {'context': 2}, 
    'address': {'context': 4}  
} 
+1

Liste çıktısı ister misiniz? ya da sözlük çıkışı? – Deniz

cevap

15
>>> from collections import OrderedDict 
>>> mydict = { 
     'age': {'context': 2}, 
     'address': {'context': 4}, 
     'name': {'context': 1} 
} 
>>> OrderedDict(sorted(mydict.iteritems(), key=lambda x: x[1]['context'])) 
OrderedDict([('name', {'context': 1}), ('age', {'context': 2}), ('address', {'context': 4})]) 
5

çünkü bunlar sıralanmamış bir koleksiyon. Bunun yerine OrderedDict formu collections formunu kullanın.

+0

Alternatif olarak, muhtemelen her tuşun değerine bakmak için bir lambda kullanarak, anahtarlar üzerinde gnarly bir liste kavrama yapabilirdi - ve bunu yapmak zor bir 'OrderedDict' kullanmak için büyük bir ders. –

+0

Güncelleme: python 3.6'dan itibaren, sözlük ekleme sırası korunur, bu nedenle bu ifade artık geçerli değildir. – pelson

İlgili konular