Python:删除重复项后,列表的dict的排序表示,按列表中的元素数排序

syn*_*gma 1 python sorting dictionary

我有一个字典,看起来像这样:

example_dict = {
        0: [(1,2),(3,4),(3,4),(4,5)],
        1: [(1,2),(3,4),(5,6),(7,8)],
        2: [(4,5),(7,8)]}
Run Code Online (Sandbox Code Playgroud)

在"临时"删除重复项之后,我想按每个列表中的元素数量得到这个字典的排序表示(仅用于排序,我不想删除删除元组).如此排序example_dict将具有以下(升序)键的顺序:2,0,1.

有没有高效的Pythonic方法来做到这一点?

Mar*_*nen 7

print sorted(example_dict,key=lambda x: len(set(example_dict[x])))
Run Code Online (Sandbox Code Playgroud)

输出:

[2, 0, 1]
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望将字典项排序为元组列表:

print sorted(example_dict.items(),key=lambda x: len(set(x[1])))
Run Code Online (Sandbox Code Playgroud)

输出:

[(2, [(4, 5), (7, 8)]), (0, [(1, 2), (3, 4), (3, 4), (4, 5)]), (1, [(1, 2), (3, 4), (5, 6), (7, 8)])]
Run Code Online (Sandbox Code Playgroud)