python按值的长度对字典进行排序

Posted

技术标签:

【中文标题】python按值的长度对字典进行排序【英文标题】:python sorting dictionary by length of values 【发布时间】:2013-05-27 22:25:39 【问题描述】:

我发现很多线程可以按here 之类的值进行排序,但它似乎对我不起作用...

我有一本包含元组的列表字典。每个列表都有不同数量的元组。我想按每个列表包含多少元组对字典进行排序。

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

这可能吗?

【问题讨论】:

【参考方案1】:
>>> 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

这是适用于 Python 2 和 Python 3 的通用解决方案:

>>> print(' '.join(sorted(d, key=lambda k: len(d[k]), reverse=True)))
two one three

【讨论】:

我在尝试运行您的代码时收到此错误:NameError: global name 'd' is not defined。我在 Python 2.7.5 d 是示例字典变量名称。不管你的dict 叫什么【参考方案2】:

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': []]

【讨论】:

您将如何做到这一点,以使字典中的每个项目都不是字典本身?

以上是关于python按值的长度对字典进行排序的主要内容,如果未能解决你的问题,请参考以下文章

python 按值计数对字典进行排序

在Python中按值对嵌套字典进行排序,并按另一个值对余数进行排序

按值对字典进行排序[重复]

Python 按照 list 中的字典的某个 key 排序

如何按值和键的多个条件对嵌套字典进行排序?

根据列表中的元素对列表作为值的字典进行排序