čtvrtek 25. srpna 2011

Python: Setřídění slovníku

Tohle je asi docela obvyklá struktura, jméno prvku a jeho paramatry.

dict = { 
  "time"    : {"tabName":"cas", "dbName":"time", "width":40}, 
  "address" : {"tabName":"adresa", "dbName":"address", "width":30}, 
  "number"  : {"tabName":"cislo", "dbName":"number", "width":35} 
}
Slovník sám o sobě je v pythonu 2.x netříditelný.
Takže nedrží ani tvar v kterém jsme ho definovali.

print dict 

>>> 
{
'address': {'width': 30, 'tabName': 'adresa', 'dbName': 'address'},
'time'    : {'width': 40, 'tabName': 'cas', 'dbName': 'time'}
'number'  : {'width': 35, 'tabName': 'cislo', 'dbName': 'number'}, 
}


řešení spočívá v převodu na list metodou items() a třídění pomocí
lambda funkce

print sorted(dict.items(), key = lambda (k,v): (v["width"])) 

>>> 
[
('address', {'width': 30, 'tabName': 'adresa', 'dbName':'address'}), 
('number' , {'width': 35, 'tabName': 'cislo', 'dbName':'number'}), 
('time'   , {'width': 40, 'tabName': 'cas', 'dbName':'time'})
] 

paramater key je funkce, které se předávají prvky listu a vrací hodnotu pro abecední třízení.

Žádné komentáře:

Okomentovat