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

  • BigDawsTv

    BigDawsTv

    20 HAZİRAN 2012
  • EvilControllers

    EvilControll

    20 Ocak 2008
  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006