我有一个以下字典:
{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循环一切都很好。那是为什么?
答案 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