繁体   English   中英

根据键、值对字典列表进行排序,使得键、值对中仅有的前三个应出现在给定的字典列表中

[英]Sort list of dictionaries according to key, value such that the only first three of the key, value pair should come in the given list of dict

如果排序大于该字典,则按关键字“排序”对字典进行排序,然后将包含下一个更大排序的字典和前三个更大排序的字典存储在列表中。

输入:

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)

有一些示例展示了如何对列表进行排序,并提供您自己的密钥以用于比较。 你需要这个倒转(即降序),然后需要前三名。

简化你所拥有的,考虑

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM