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

  • Djbasilio AuToBaSs

    Djbasilio Au

    20 Aralık 2008
  • Kenneth Håkonsen

    Kenneth Håk

    13 Mart 2011
  • tsweeney79

    tsweeney79

    21 Ocak 2008