2015-12-09 18 views
6

Ben alfabetik, o içinde bu sözlük birinci Numerically sıralamak gerekir Dictionary {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7}Sıralama sözlüğü

var. 2 öğe aynı sayı anahtarına sahipse, alfabetik olarak sıralanması gerekir. Ben vb lambda, liste anlama kullanarak denedim ama onları doğru sıralamak için görünmektedir olamaz Bob, Alex, Bill, Charles

bu çıkışı olmalıdır.

cevap

11

: Daha sonra, onun anahtarlarını Sözlüğün değerleriyle olacak sıralama anahtarını belirleyebilmektedir

>>> d = {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7}  
>>> sorted(d, key=lambda k: (d[k], k)) 
['Bob', 'Alex', 'Bill', 'Charles'] 
4

sorted() numaralı telefonu kullanarak sözlükteki öğeleri (bununla eşleşen tuplelar) sıralayın. (Anahtar k sonra, ilk) değerinden (d[k] tarafından sırayla) tuşuna fonksiyonu ile sorted kullanma

>>> d = {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7} 
>>> sorted(d.items(), key=lambda x:(x[1],x[0])) 
[('Bob', 3), ('Alex', 4), ('Bill', 4), ('Charles', 7)] 
>>> [t[0] for t in sorted(d.items(), key=lambda x:(x[1],x[0]))] 
['Bob', 'Alex', 'Bill', 'Charles']