有人可以解释我如何在字典中对列表进行排序吗?例如:
B = {'Mary': [(850, 1000), (9, 10), (1000, 3000), (250, 550)], 'john': [(500, 1000), (800,3000), (20, 100), (5, 36)]}
使用'sorted'功能,如何根据列表中的第一个值按升序对其进行排序?同样,如何根据列表中的第二个值按升序对其进行排序?
非常感谢
答案 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])