SORU
25 Ocak 2012, ÇARŞAMBA


Nasıl anahtar bir sözlük sıralama yapabilir miyim?

{1:89, 2:3, 3:0, 4:5} {2:3, 1:89, 4:5, 3:0} gitmek için iyi bir yol ne olabilir?
Ama hepsi "" dizilerini döndüren operatör. sıralanmış kullanın bazı yazılara baktım

CEVAP
25 Ocak 2012, ÇARŞAMBA


Standart Python sözlükler sırasız. Eğer (anahtar,değer) çiftleri sıralanır bile, sipariş koruyacak bir şekilde dict saklamak mümkün olmaz.

En kolay şekilde hangi öğeleri eklenmiş sırasını hatırlayan OrderedDict kullanmak için:

In [1]: import collections

In [2]: d = {2:3, 1:89, 4:5, 3:0}

In [3]: od = collections.OrderedDict(sorted(d.items()))

In [4]: od
Out[4]: OrderedDict([(1, 89), (2, 3), (3, 0), (4, 5)])

Asla od yazdırılır; beklendiği gibi işe yarayacak şekilde zihin

In [11]: od[1]
Out[11]: 89

In [12]: od[3]
Out[12]: 0

In [13]: for k, v in od.iteritems(): print k, v
   ....: 
1 89
2 3
3 0
4 5

Python 3

Python 3 kullanıcıları için, bir .iteritems() yerine: .items() kullanması gerekir

In [13]: for k, v in od.items(): print k, v
   ....: 
1 89
2 3
3 0
4 5

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8lacKy

    8lacKy

    30 Mart 2009
  • gamingbits

    gamingbits

    2 Mayıs 2006
  • NikkoNantone

    NikkoNantone

    21 Kasım 2011