如果排序较大,则按“排序”键对字典排序,然后应首先显示该字典,然后将包含下一个更大排序的字典和前三个更大的字典存储在清单。
输入:
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)
答案 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}]