Halo、dictのリストを値でソートしたい:
a = [{'cavity' : '11A', 'ltg_nr' : 'Ltgnr11A'},
{'cavity' : '20', 'ltg_nr' : 'Ltgnr20'},
{'cavity' : '10', 'ltg_nr' : 'Ltgnr10'},
{'cavity' : '17B', 'ltg_nr' : 'Ltgnr17B'},
{'cavity' : '1K', 'ltg_nr' : 'Ltgnr1K'},
{'cavity' : '11A', 'ltg_nr' : 'Ltgnr11A'},
{'cavity' : '11A', 'ltg_nr' : 'Ltgnr11A'},
{'cavity' : '22', 'ltg_nr' : 'Ltgnr22'},
{'cavity' : '21A', 'ltg_nr' : 'Ltgnr21A'},
{'cavity' : '21C', 'ltg_nr' : 'Ltgnr21C'},
{'cavity' : '21B', 'ltg_nr' : 'Ltgnr170'},
{'cavity' : '101', 'ltg_nr' : 'Ltgnr170'},
{'cavity' : '22AA', 'ltg_nr' : 'Ltgnr170'},
{'cavity' : '100A', 'ltg_nr' : 'Ltgnr170'}]
newList= sorted(a, key=lambda k: (len(k['cavity']),k['cavity']) )
print "-"*20 + ' sorted ' + "-"*20
for k in newList:
print k['cavity']
結果は私が除外したものではありません:
C:\Python27>python.exe test_dict.py
-------------------- sorted --------------------
10
1K
20
22
101
11A
11A
11A
17B
21A
21B
21C
100A
22AA
最初に数字で並べ替え、次に英字で並べ替えます。どうやってやるの :
1K
10
11A
11A
11A
17B
20
21A
21B
21C
22
22AA
100A
101
すべての推測は大歓迎です:)ThanxPiotr