【问题标题】:OrderedDict flawed order for large keys大键的 OrderedDict 有缺陷的顺序
【发布时间】:2017-11-12 00:10:50
【问题描述】:
hybrid_dict = OrderedDict(sorted(hybrid_dict.items(), key=lambda t: t[0]))
for k,v in hybrid_dict.items():
    print(k)

输出:

9148000.0
9149000.0
915000.0
9150000.0
9151000.0 
9152000.0 

915000.0 不应该在那里。

为什么有序 dict 会像这样对我的字典进行排序? print(hybrid_dict) 给出相同的顺序。

【问题讨论】:

    标签: python sorting dictionary python-3.5


    【解决方案1】:

    我检查了一下,我认为这是因为您的键是字符串而不是数字,并且字符串比较 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 2023-03-14
      • 2012-08-22
      相关资源
      最近更新 更多