我是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' 这可能是什么原因?
答案 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中存储了键和相应的值,因为它保存了输入值的顺序。