python tri dictionnaire de la longueur de valeurs

j'ai trouvé beaucoup de fils pour le tri par des valeurs comme ici mais il ne semble pas fonctionner pour moi...

j'ai un dictionnaire de listes qui ont des tuples. Chaque liste a une quantité différente de tuples. Je veux trier le dictionnaire par combien de tuples chaque liste contient.

>>>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

est-ce possible?

31
demandé sur Community 2013-06-01 06:19:56

2 réponses

>>> 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

cela fonctionne aussi:

>>> print ' '.join(sorted(d, key=lambda k: len(d[k]), reverse=True))
two one three
57
répondu jamylak 2013-06-01 02:22:54

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': []}]
0
répondu Oleksiy Tsebriy 2018-05-21 09:21:11