在字典中对列表进行排序

时间:2014-07-15 18:49:43

标签: python list dictionary

有人可以解释我如何在字典中对列表进行排序吗?例如:

B = {'Mary': [(850, 1000), (9, 10), (1000, 3000), (250, 550)], 'john': [(500, 1000), (800,3000), (20, 100), (5, 36)]}

使用'sorted'功能,如何根据列表中的第一个值按升序对其进行排序?同样,如何根据列表中的第二个值按升序对其进行排序?

非常感谢

2 个答案:

答案 0 :(得分:2)

我会根据每个sort的第一个元素迭代您的项目,然后就地tuple

B = {
      'Mary': [(850, 1000), (9, 10), (1000, 3000), (250, 550)],
      'john': [(500, 1000), (800,3000), (20, 100), (5, 36)],
    }

for item in B:
    B[item].sort(key = lambda i: i[0])

输出

{
  'john': [(5, 36), (20, 100), (500, 1000), (800, 3000)],
  'Mary': [(9, 10), (250, 550), (850, 1000), (1000, 3000)]
}

答案 1 :(得分:0)

你必须使用它的关键参数。 Key是一个函数,它将iterable的元素作为一个agrument并返回基于排序的值:

for e in B:
    B[e] = sorted(B[e], key=lambda x: x[Element_ID]) 

元素ID是要作为排序依据的元素的索引。因此,如果要根据第二个元素进行排序,则为1;如果要根据第一个元素进行排序,则为0。

编辑:

使用list&#s排序方法而不是排序方式也会更快:

for e in B:
    B[e].sort(B[e], key=lambda x: x[Element_ID])