4

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

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()))

我怎么能这么简单?

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

谢谢

4

3 回答 3

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)]) 

如果这作为最终结果更有用。

于 2013-10-08T13:07:55.723 回答
3

像这样的东西:

my_dict = OrderedDict(sorted(my_dict__.items(), key=lambda x:int(x[0])))
# OrderedDict([('1', 8), ('3', 6), ('7', 55), ('11', 2), ('22', 1)])
于 2013-10-08T10:10:12.713 回答
1

这对我有用。

>>> 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)])

这与罗曼的回答几乎相同,所以我不知道为什么他的回答对你不起作用。

于 2013-10-08T10:29:09.523 回答