Ben sayılar olarak romen rakamları ile romen rakamları, tamsayı formundaki romen rakamları değerleri olarak kralların bir sözlüğü var. En yaşlı dan genç listeyi sıralamak istiyorumPython: Bir sözlükteki öğeleri bir anahtarın bir parçası ile mi ayırıyorsunuz?
d = {'Zemco III': 3, 'Usamec XL': 40, 'Usamec VII': 7, 'Robert VIII': 8, 'Usamec XLII': 42, 'Mary XXIV': 24, 'Robert III': 3, 'Robert XV': 15, 'Usamec XLIX': 49}
, o Usamec XLII Usamec XLIX önce gelmelidir olduğunu. Listeyi alfabetik olarak sıralamak isterim, bu da Usamec XLII'nin Zemco III'ten önce gelmesidir. Benim yaklaşımım
gibi romen rakamıyla değeriyle sonra, ilk adıyla sıralamak oldu: romen rakamları anahtarın parçası olduğundan amaçlandığı gibi
x = sorted(d.items(),key=operator.itemgetter(0))
y = sorted(x,key=operator.itemgetter(1))
Ancak, benim alfabetik sıralama çalışmıyor. Sorum şu ki, anahtarın bir kısmı tarafından sözlüğü sıralayabilir miyim, örneğin anahtarım Zemco III ise, tüm anahtarım yerine anahtar kelimelerimi key.split() [0] ile bir şekilde sıralayabilir miyim? Teşekkürler!
Bu çalıştı. Teşekkür ederim Pavel! –
Bir takip sorusu olarak, eğer sözcüğüm sipariş edilseydi, bu yüzden numara ilk önce geldi, sonra isim ve ben yine ismin ilk kısmına göre sıralamak istedim? Aynı formatı takip edersek: 'sort (d.items(), key = lambda (num, name): (num, name.rsplit (Yok, 1) [0])) ama nasıl bir şey eklerim? gibi 'anahtar = operator.itemgetter (1)' gibi? Teşekkürler –
Aynı tuşla sıralama yapıyorsanız, tuple aynı olmalıdır: '(name.rsplit (Yok, 1) [0], num)'. Sadece 'lambda' argümanlarının sırası değişir. Eğer ismi ayırmanız gerekiyorsa, 'itemgetter' size yardımcı olmaz. Tersine çevirilen sözlüğünüz çift sayıları nasıl tutacak? –