根据键值对字典列表进行排序,以使键值对中仅有的前三个应位于给定的字典列表中

时间:2018-08-16 14:49:11

标签: python list dictionary

如果排序较大,则按“排序”键对字典排序,然后应首先显示该字典,然后将包含下一个更大排序的字典和前三个更大的字典存储在清单。

输入:

my_list = [{u'item_group': u'Bits Special',
         u'item_name': u'Tool Bits-Metric',
         u'ordering': 1},
        {u'item_group': u'Performance Drills 3X',
         u'item_name': u'Drills-Short-Metric',
         u'ordering': 3},
        {u'item_group': u'Hand Taps',
         u'item_name': u'Shank-Metric',
         u'ordering': 4},
        {u'item_group': u'Tool Bits',
         u'item_name': u'T42-Square HSS Tool Bits-BSW',
         u'ordering': 2,}]

预期o / p:

     op_list = [{u'item_group': u'Hand Taps',u'item_name': u'Shank-Metric',
           u'ordering': 4},{u'item_group': u'Performance Drills 3X',
           u'item_name': u'Drills-Short-Metric',u'ordering': 3}, 
          {u'item_group': u'Tool Bits',u'item_name': u'T42-Square HSS 
           Tool Bits-BSW',u'ordering': 2,}]

我尝试过:

 for i in mylist:
       if i['ordering']>mylist['ordering']:
          op_list.append(i)

1 个答案:

答案 0 :(得分:0)

有一些示例显示了如何对列表进行排序,并提供了您自己的用于比较的键。您需要对此进行重新调整(即降序),然后需要排在前三名。

简化您的工作,考虑

my_list=[{u'ordering':1}, {u'ordering':3}, {u'ordering':4}, {u'ordering':2}]

您可以对此进行排序:

>>> sorted(my_list, key=lambda d: d[u'ordering'], reverse=True)
[{'ordering': 4}, {'ordering': 3}, {'ordering': 2}, {'ordering': 1}]

并切出您需要的东西:

>>> sorted(my_list, key=lambda d: d[u'ordering'], reverse=True)[:3]
[{'ordering': 4}, {'ordering': 3}, {'ordering': 2}]