2017-06-09 12 views
1
hybrid_dict = OrderedDict(sorted(hybrid_dict.items(), key=lambda t: t[0])) 
for k,v in hybrid_dict.items(): 
    print(k) 

出力:OrderedDict欠陥があるため

9148000.0 
9149000.0 
915000.0 
9150000.0 
9151000.0 
9152000.0 

915000.0があってはなりません。

なぜ辞書はこのような順序で並べられますか? print(hybrid_dict)は同じ順序を示します。

答えて

0

あなたのキーは数字ではなく文字列で、文字列はLexicographical orderと比較していると思います。彼らはただの数字を変更しているかのよう

は、それらをソートするには、あなたのkey -function:

from collections import OrderedDict 
hybrid_dict = dict.fromkeys(['9148000.0','9149000.0','915000.0','9150000.0','9151000.0','9152000.0']) 
hybrid_dict = OrderedDict(sorted(hybrid_dict.items(), key=lambda t: float(t[0]))) 
for k,v in hybrid_dict.items(): 
    print(k) 

います:

915000.0 
9148000.0 
9149000.0 
9150000.0 
9151000.0 
9152000.0 
関連する問題