基于包含字母数字值的键对python字典进行排序

时间:2015-06-05 13:59:43

标签: python sorting dictionary key alphanumeric

我是python的新手。 在Python中,我想基于字母数字键来对字典项进行排序。

代码段如下:

items={'100 kg': u"apple", '500 kg': u"cabbage", '1020 kg': u"banana", '259 GB': u"carrot"}

我想根据数量按升序对其进行排序。 有没有办法在Python中做到这一点?

添加, 我使用建议的技术对字典键进行排序在此之后,我想在另一个新词典中添加已排序的键及其对应的值,以便我可以按排序的方式获取字典,但是新的字典不会按照我插入的顺序存储数据。

因此,我使用了Python的orderedDict。

为此,我使用代码:

import collections

items={'100 kg': u"apple", '500 kg': u"cabbage", '1020 kg': u"banana", '259 kg': u"carrot"}
sorted_keys = sorted(items, key = lambda x : int(x.split()[0]))
sorted_capacity = collections.OrderedDict()
for j in sorted_keys:
    for i in items:
        if j == i:
            print i  
            sorted_capacity[j]=items[j]
            break

这里我收到错误:AttributeError:'module'对象没有属性'OrderedDict' 这可能是什么原因?

2 个答案:

答案 0 :(得分:1)

您无法对字典进行排序,因为python词典是无序的。

您可以获得的是按键或值的排序列表

>>> items={'100 kg': u"apple", '500 kg': u"cabbage", '1020 kg': u"banana", '259 GB': u"carrot"}
>>> sorted(items, key = lambda x : int(x.split()[0]))
['100 kg', '259 GB', '500 kg', '1020 kg']

答案 1 :(得分:0)

我用过

  

已排序(items,key = lambda x:int(x.split()[0]))

用于排序我的字典的键,后来我在orderedDict中存储了键和相应的值,因为它保存了输入值的顺序。