Dada uma Lista de Dicionário, execute a classificação por tamanho do dicionário.

Entrada : test_list = [{4: 6, 9: 1, 10: 2, 2: 8}, {4: 3, 9: 1}, {3: 9}, {1: 2, 9: 3, 7: 4}] 
Resultado : [{3: 9}, {4: 3, 9: 1}, {1: 2, 9: 3, 7: 4}, {4: 6, 9: 1, 10: 2, 2 : 8}] 
Explicação : 1 <2 <3 <4, classificado pelo número de chaves do dicionário.

Entrada : test_list = [{4: 3, 9: 1}, {3: 9}, {1: 2, 9: 3, 7: 4}] 
Saída : [{3: 9}, {4: 3, 9 : 1}, {1: 2, 9: 3, 7: 4}] 
Explicação : 1 <2 <3, classificado pelo número de chaves do dicionário. 

Método # 1: usando len() + sort()

Neste, a classificação é realizada usando sort() e len() é usado para obter o tamanho do dicionário.



def get_len(sub): 
  
    
    return len(sub) 
  
  
test_list = [{4: 6, 9: 1, 10: 2, 2: 8}, { 
    4: 3, 9: 1}, {3: 9}, {1: 2, 9: 3, 7: 4}] 
print("The original list is : " + str(test_list)) 
test_list.sort(key=get_len) 
print("Sorted List : " + str(test_list)) 

Resultado:

A lista original é: [{4: 6, 9: 1, 10: 2, 2: 8}, {4: 3, 9: 1}, {3: 9}, {1: 2, 9: 3, 7 : 4}]
Lista ordenada: [{3: 9}, {4: 3, 9: 1}, {1: 2, 9: 3, 7: 4}, {4: 6, 9: 1, 10: 2 , 2: 8}]

Método # 2: usando sorted() + len() + lambda

Aqui, realizamos a tarefa de classificação usando sorted() , e a função lambda é usada no lugar da função externa para resolver o problema de obtenção de comprimento.

test_list = [{4: 6, 9: 1, 10: 2, 2: 8}, { 
    4: 3, 9: 1}, {3: 9}, {1: 2, 9: 3, 7: 4}] 
print("The original list is : " + str(test_list)) 
res = sorted(test_list, key=lambda sub: len(sub)) 
print("Sorted List : " + str(res)) 

 Resultado:

A lista original é: [{4: 6, 9: 1, 10: 2, 2: 8}, {4: 3, 9: 1}, {3: 9}, {1: 2, 9: 3, 7 : 4}]
Lista ordenada: [{3: 9}, {4: 3, 9: 1}, {1: 2, 9: 3, 7: 4}, {4: 6, 9: 1, 10: 2 , 2: 8}]