根据键值列出的键列表Python - python

我有一本名为mark的python词典:

marks={’joe’:4, ’suzan’:5, ’peter’:4, ’bob’:4, ’john’:6, ’ann’:5, ’fred’:3}

我想根据他们在该考试中的排名列出学生名单。更精确地,建立一个列表等级,使得:

rank[0]包含最佳学生名单,
rank[1]包含次优学生等的列表。

输出应为:

[[’john’], [’ann’, ’suzan’], [’joe’, ’bob’, ’peter’], [’fred’]]

有人可以帮我吗?我正在尝试一段时间,但找不到任何简单的解决方案。
谢谢

python大神给出的解决方案

Python有一些很棒的内置库,例如itertools和operator。

这是一个班轮:

from itertools import groupby
from operator import itemgetter

marks = {'ann': 5, 'bob': 4, 'fred': 3, 'joe': 4, 'john': 6, 'peter': 4, 'suzan': 5}

print [[name for name, rank in g] for k, g in groupby(sorted(marks.iteritems(), key=itemgetter(1), reverse=True), key=itemgetter(1))]

我的实现主要基于示例here。