Anahtar veya değer göre sıralayabilirim, ancak bir satırda, sonra değer, sonra anahtar göre sıralı ihtiyacım var. Sana sorunu gösterebilir bu daha iyi açıklamak için:Değere göre bir sözlüğü sıralama sonra anahtar
dict = {'apple': 2, 'banana': 3, 'almond':2 , 'beetroot': 3, 'peach': 4}
benim çıkış onların tuşu (alfabetik) tarafından (A-Z) artan sonra kendi değeriyle inen sıralanıp olmak istiyorum. Böyle bir listede Çıkan:
çıkışında olarak: Şimdiye kadar bunu nasıl biliyor ['peach', 'banana', 'beetroot', 'almond', 'apple']
tek yolu ise: ['almond', 'apple', 'banana', 'beetroot', 'peach']
: çıkışını ile
[v[0] for v in sorted(dict.items(), key=lambda(k,v): (v,k))]
Böylece, artan sırada ve tuşlara artan sırada alfabetik olarak sıralanır (AZ). Bu yüzden bu tersine çevirirsek:
[v[0] for v in sorted(dict.items(), key=lambda(k,v): (v,k), reverse=True)]
çıkışını ile: ['peach', 'beetroot', 'banana', 'apple', 'almond']
O alfabetik sırasını (Z-A) büyükten küçüğe azalan değerleri ve anahtarları sıralanmış etmiştir.
Değerleri azalan düzende ve anahtarları artan sırada (yani A-Z) sıralamak ve yukarıda gösterdiğim çıktıyı elde etmenin bir yolu var mı?
Python 3 demet parametresi açma uzaklaştırıldı, böylece hat üzerinde hemen '[v [0] sıralanmış (d.items()' de v, tuş = lambda kv olarak bildirilmesi gerekmektedir Sadece bir hatırlatma : (-kv [1], kv [0]))]. Bkz. PEP 3113 https://www.python.org/dev/peps/pep-3113/ –
Anahtar işlev, 'operator.itemgetter (1, 0) '* olarak yazılabilir. anahtar/değerden birinin sıralanması. – Moberg