按键反转字典不起作用

时间:2010-10-04 18:02:49

标签: python sorting dictionary

我有一个以下字典:
{2009: [12, 11, 10, 9], 2010: [1]}

我正在尝试对它进行反向排序,以便2010年首先出现。这是代码:

def dictSort(dict):
    items = dict.items()
    items.sort(reverse=True)
    dict = {}
    for item in items:
        dict[item[0]] = item[1]
    return dict

但作为回报,我得到了相同的字典。直到for循环一切都很好。那是为什么?

4 个答案:

答案 0 :(得分:2)

字典是无序的,无论你输入什么字典都没有按照你添加的顺序存储。

如果您想按排序顺序对其执行某些操作,则可以执行以下操作:

items = dict.items.sort(reverse=True)
for item in items:
    doSomething(item,mydict[item])

for key,value in iter(sorted(mydict.iteritems(),reverse=True))
     doSomething(key,value)

答案 1 :(得分:2)

字典键未订购。将dict视为一组键/值对。

这将在Python 3.1中出现: http://docs.python.org/dev/library/collections.html#collections.OrderedDict

答案 2 :(得分:0)

字典没有订单。如果您尝试按特定顺序输出字典,请尝试抓取所有键,对其进行排序,然后使用该列表来了解输出内容的顺序。

答案 3 :(得分:0)

这里有一种生成dict项目的方法,按键的顺序相反(BTW请不要使用dict作为变量名!):

def dict_sort(thisdict, reverse=True):
    return ((key, thisdict[key]) for key in sorted(thisdict, reverse=reverse))

mydict = {2009: [12, 11, 10, 9], 2010: [1]}
for i in dict_sort(mydict):
    print "%i: %s" % i