【问题标题】:python ordereddict when the key is a "numeric string"当键是“数字字符串”时的pythonordereddict
【发布时间】:2013-10-15 04:53:01
【问题描述】:

我有一个带有数字键但为字符串格式的无序字典,我想获得一个有序字典(通过数字键):

my_dict__ = {'3': 6, '1': 8, '11': 2, '7': 55, '22': 1}
my_dict_ = {}
for key, value in my_dict__.items():
    my_dict_[int(key)] = value
my_dict = OrderedDict(sorted(my_dict_.items()))

我怎么能这么简单?

(结果,key可以是int或string)

谢谢

【问题讨论】:

    标签: python dictionary sorted ordereddictionary


    【解决方案1】:

    类似这样的:

    my_dict = OrderedDict(sorted(my_dict__.items(), key=lambda x:int(x[0])))
    # OrderedDict([('1', 8), ('3', 6), ('7', 55), ('11', 2), ('22', 1)])
    

    【讨论】:

    • @fj123x 你有python 2还是python 3?
    【解决方案2】:

    这对我有用。

    >>> from collections import OrderedDict
    >>> my_dict__ = {'3': 6, '1': 8, '11': 2, '7': 55, '22': 1}
    >>> keylist = sorted(my_dict__.keys(), key=lambda x: int(x))
    >>> my_dict = OrderedDict(((k, my_dict__[k]) for k in keylist))
    >>> my_dict
    OrderedDict([('1', 8), ('3', 6), ('7', 55), ('11', 2), ('22', 1)])
    

    这和 Roman 的回答几乎一样,所以我不知道为什么他的回答对你不起作用。

    【讨论】:

      【解决方案3】:

      您也可以直接使用以下内容创建 int dict:

      my_dict = OrderedDict(sorted((int(key), value) for key, value in my_dict__.items()))
      

      这给了你:

      OrderedDict([(1, 8), (3, 6), (7, 55), (11, 2), (22, 1)]) 
      

      如果最终结果更有用的话。

      【讨论】:

        猜你喜欢
        • 2019-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多