【问题标题】:How to sort a list of dictionaries by length of dictionary [duplicate]如何按字典长度对字典列表进行排序[重复]
【发布时间】:2016-01-10 18:01:46
【问题描述】:

我有一个字典列表,其中每个字典可以有不同的长度(不同数量的键)。如何对列表进行排序,以便最长的字典位于 list[0]

【问题讨论】:

  • 所有答案都正确。我选择了 Dima Kudosh 提出的那个,因为它不需要创建新列表来存储排序列表。

标签: python list sorting dictionary


【解决方案1】:

使用key=len对列表进行排序

>>> d0
{'a': 100, 'c': 150, 'b': 5, 'd': 60}
>>> d1
{1: 'ONE', 2: 'TWO'}
>>> d2
{3: 'THREE', 4: 'FOUR'}
>>> d3
{1:'ONE',2:'TWO',3:'THREE'}
l = [d0,d1,d2,d3]
>>> sorted(l, key=len, reverse=True)
[{'a': 100, 'c': 150, 'b': 5, 'd': 60}, {1: 'ONE', 2: 'TWO', 3: 'THREE'}, {1: 'ONE', 2: 'TWO'}, {3: 'THREE', 4: 'FOUR'}]
>>>
>>> l.sort(key=len, reverse=True) #in list sorting

【讨论】:

    【解决方案2】:

    您可以在列表中使用排序方法:

    list_with_dicts.sort(key=lambda x: -len(x))
    

    【讨论】:

      【解决方案3】:

      您可以将您的字典长度传递给sorted key 参数:

      sorted_list = sorted(l, key = lambda x: len(x.keys())
      

      或者只是

      sorted_list = sorted(l, key = len)
      

      l 是一个包含您的 dicts 的列表

      【讨论】:

        【解决方案4】:

        你可以使用sorted方法:

        newList = sorted(list, key=lambda k:len(k), reverse = True)
        

        或不创建新列表:

        list = sort(key=lambda k:len(k), reverse = True)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-22
          • 2010-09-09
          相关资源
          最近更新 更多