列出的dict列表

时间:2010-09-02 22:34:25

标签: python list sorting dictionary

我有这个:

dictionary = { (month, year) : [int, int, int] }

我想获得一个包含有序数据的元组/列表列表(按月和年):

#example info
list = [(8,2010,2,5,3),(1,2011,6,7,8)...]

我已经尝试了几次,但我无法找到解决方案。

感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

不要使用作为你的标识符的内置名称 - 这是一种可怕的做法,没有任何优势,并且它最终导致你陷入一些特殊的错误行为。所以我调用的结果是thelist(一个任意的,非正常的,很好的标识符),不是 list(隐藏内置的)。

import operator

thelist = sorted((my + tuple(v) for my, v in dictionary.iteritems()),
                 key = operator.itemgetter(1, 0))

答案 1 :(得分:0)

这样的事情应该完成工作:

>>> d = { (8, 2010) : [2,5,3], (1, 2011) : [6,7,8], (6, 2010) : [11,12,13] }
>>> sorted((i for i in d.iteritems()), key=lambda x: (x[0][1], x[0][0]))
[((6, 2010), [11, 12, 13]), ((8, 2010), [2, 5, 3]), ((1, 2011), [6, 7, 8])]

(假设lambda应该逐年排序,然后是月份。)

请参阅Alex Martelli关于如何使用itemgetter来解决此问题的更好答案。

答案 2 :(得分:0)

这是一种非常简洁的做法。

l = [(m, y) + tuple(d[(y, m)]) for y, m in sorted(d)]