1
a_list=[
    {'status':'f','name':'battery','time':1.3},
    {'status':'a','name':'mouse','time':3.5},
    {'status':'p','name':'battery','time':1.0},
    {'status':'p','name':'battery','time':0.8},
    {'status':'n','name':'touch','time':1.6},
    {'status':'t','name':'typec','time':1.7},
    {'status':'fail','name':'keyboard','time':3.4},
    {'status':'fail','name':'keyboard','time':1.7},
    {'status':'fa','name':'mouse','time':1.8},
    {'status':'k','name':'touch','time':2.4}]

The result I want to get is this: I want to put together the same name in the dictionary. and then sort according to the time. Result like this:

sorted=[
  {'status':'f','name':'battery','time':0.8},{'status':'f','name':'battery','time':1.0},
  {'status':'p','name':'battery','time':1.3},{'status':'n','name':'touch','time':1.6,
  {'status':'k','name':'touch','time':2.4},{'status':'fail','name':'keyboard','time':1.7},
  {'status':'fail','name':'keyboard','time':3.4},{'status':'fa','name':'mouse','time':1.8},
  {'status':'a','name':'mouse','time':3.5}{'status':'t','name':'typec','time':1.7}]
Espoir Murhabazi
  • 5,973
  • 5
  • 42
  • 73
user9624737
  • 125
  • 1
  • 7

1 Answers1

1

You need to sort it by name and time:

unsorted=[{'status':'f','name':'battery','time':1.3},
{'status':'a','name':'mouse','time':3.5},{'status':'p','name':'battery','time':1.0},
{'status':'p','name':'battery','time':0.8},{'status':'n','name':'touch','time':1.6},
{'status':'t','name':'typec','time':1.7},{'status':'fail','name':'keyboard','time':3.4},
{'status':'fail','name':'keyboard','time':1.7},{'status':'fa','name':'mouse','time':1.8},
{'status':'k','name':'touch','time':2.4}]

sorted(unsorted, key=lambda x: (x['name'], x['time']))

#[{'status': 'p', 'name': 'battery', 'time': 0.8}, {'status': 'p', 'name': 'battery', 'time': 1.0}, {'status': 'f', 'name': 'battery', 'time': 1.3}, {'status': 'fail', 'name': 'keyboard', 'time': 1.7}, {'status': 'fail', 'name': 'keyboard', 'time': 3.4}, {'status': 'fa', 'name': 'mouse', 'time': 1.8}, {'status': 'a', 'name': 'mouse', 'time': 3.5}, {'status': 'n', 'name': 'touch', 'time': 1.6}, {'status': 'k', 'name': 'touch', 'time': 2.4}, {'status': 't', 'name': 'typec', 'time': 1.7}]
zipa
  • 27,316
  • 6
  • 40
  • 58