numerar - Diccionario de clasificación de Python por longitud de valores
shape length arcpy (2)
He encontrado muchos hilos para ordenar por valores como here pero no parece estar funcionando para mí ...
Tengo un diccionario de listas que tienen tuplas. Cada lista tiene una cantidad diferente de tuplas. Quiero ordenar el diccionario por la cantidad de tuplas que contiene cada lista.
>>>to_format
>>>{"one":[(1,3),(1,4)],"two":[(1,2),(1,2),(1,3)],"three":[(1,1)]}
>>>for key in some_sort(to_format):
print key,
>>>two one three
es posible?
dict= {''a'': [9,2,3,4,5], ''b'': [1,2,3,4, 5, 6], ''c'': [], ''d'': [1,2,3,4], ''e'': [1,2]}
dict_temp = {''a'': ''hello'', ''b'': ''bye'', ''c'': '''', ''d'': ''aa'', ''e'': ''zz''}
def sort_by_values_len(dict):
dict_len= {key: len(value) for key, value in dict.items()}
import operator
sorted_key_list = sorted(dict_len.items(), key=operator.itemgetter(1), reverse=True)
sorted_dict = [{item[0]: dict[item [0]]} for item in sorted_key_list]
return sorted_dict
print (sort_by_values_len(dict))
output:
[{''b'': [1, 2, 3, 4, 5, 6]}, {''a'': [9, 2, 3, 4, 5]}, {''d'': [1, 2, 3, 4]}, {''e'': [1, 2]}, {''c'': []}]
>>> d = {"one": [(1,3),(1,4)], "two": [(1,2),(1,2),(1,3)], "three": [(1,1)]}
>>> for k in sorted(d, key=lambda k: len(d[k]), reverse=True):
print k,
two one three
Esto también funciona:
>>> print '' ''.join(sorted(d, key=lambda k: len(d[k]), reverse=True))
two one three