2015-07-17 4 views
-3

Я прочитал большую часть записи по этому вопросу, но ничто не соответствовало моей потребности. Я пытался импровизировать еще не происходит (Eventhough нет ошибок, а не результат того, что я ожидал)Сортировка списка в python на основе словаря внутри словаря

Это моя JSON строка:

{ 
    "Newcaselist": [ 
     { 
      "RegisteredDate": "2015-07-10 19:05:11", 
      "Consultation": { 
       "Status": "CALL COMPLETED", 
       "CALLID": 862, 
       "REC_URL": "41dd0094-9a11-49fb-8eb9-f15ccb41ea77_0_1", 
       "Time": "2", 
       "Date": "2015-07-10 19:05:11", 
       "Type": "CONSULTATION" 
      }, 
      "ID": 4388 
     }, 
     { 
      "RegisteredDate": "2015-07-10 19:07:42", 
      "Consultation": { 
       "Status": "CALL COMPLETED", 
       "CALLID": 863, 
       "REC_URL": "c2e650a2-6ff0-4adc-9891-4a3a6f49007d_0_1", 
       "Time": "2", 
       "Date": "2015-07-10 19:07:42", 
       "Type": "CONSULTATION" 
      }, 
      "ID": 4389 
     }, 
     { 
      "RegisteredDate": "2015-07-10 19:21:41", 
      "Consultation": { 
       "Status": "CALL COMPLETED", 
       "CALLID": 864, 
       "REC_URL": "4ac72214-f1d9-4eed-9957-8d0ec2e78278_0_1", 
       "Time": "1", 
       "Date": "2015-07-10 19:21:41", 
       "Type": "CONSULTATION" 
      }, 
      "ID": 4390 
     }, 
     { 
      "RegisteredDate": "2015-07-10 19:22:52", 
      "Consultation": { 
       "Status": "DOCTOR DISCONNECTED", 
       "CALLID": 865, 
       "REC_URL": "None", 
       "Time": "1", 
       "Date": "2015-07-10 19:22:52", 
       "Type": "CONSULTATION" 
      }, 
      "ID": 4391 
     }, 
     { 
      "RegisteredDate": "2015-07-12 12:26:16", 
      "Consultation": { 
       "Status": "CALL COMPLETED", 
       "CALLID": 883, 
       "REC_URL": "4c55acf1-f3cd-4014-80a2-142886ea671d_0_1", 
       "Time": "1", 
       "Date": "2015-07-12 12:28:42", 
       "Type": "FOLLOW_UP" 
      }, 
      "ID": 4408 
     }, 
     { 
      "RegisteredDate": "2015-07-12 12:54:42", 
      "Consultation": { 
       "Status": "CALL COMPLETED", 
       "CALLID": 892, 
       "REC_URL": "0bb769ca-fe74-48de-9324-6315a21e5b8e_0_1", 
       "Time": "3", 
       "Date": "2015-07-12 13:15:21", 
       "Type": "FOLLOW_UP" 
      }, 
      "ID": 4410 
     }, 
     { 
      "RegisteredDate": "2015-07-12 14:48:58", 
      "Consultation": { 
       "Status": "CALL COMPLETED", 
       "CALLID": 895, 
       "REC_URL": "fdb14e8f-2176-4547-83ae-3e1757e78f50_0_1", 
       "Time": "1", 
       "Date": "2015-07-12 14:56:58", 
       "Type": "FOLLOW_UP" 
      }, 
      "ID": 4413 
     }, 
     { 
      "RegisteredDate": "2015-07-15 14:30:49", 
      "Consultation": { 
       "Status": "CALL COMPLETED", 
       "CALLID": 920, 
       "REC_URL": "f90593a6-9fcc-432b-b9f0-0e2a7cf33cfe_0_1", 
       "Time": "1", 
       "Date": "2015-07-15 14:30:49", 
       "Type": "CONSULTATION" 
      }, 
      "ID": 4437 
     }, 
     { 
      "RegisteredDate": "2015-07-16 20:21:43", 
      "Consultation": { 
       "Status": "CALL COMPLETED", 
       "CALLID": 956, 
       "REC_URL": "cd8dbe12-5155-450c-89ff-b043a77f65f6_0_1", 
       "Time": "1", 
       "Date": "2015-07-16 20:21:43", 
       "Type": "CONSULTATION" 
      }, 
      "ID": 4468 
     } 
    ], 
    "Success": false, 
    "StatusCode": 600, 
    "Message": "Record retrived successfully" 
} 

Я хочу, чтобы отсортировать его порядок «Дата» внутри Консультация. В списке есть другие объекты, в которые входит Доктор и пациент. Для удобочитаемости я пропустил это для публикации.

Я попытался

sorted(JArray, key=itemgetter('Consultation')) 

Но это не сортировка.

+0

ли 'JArray' полный JSON? –

+0

Да, это полный JSON –

+0

Это недопустимый python, откуда это происходит? –

ответ

0

Прежде всего, если JArray полный JSON, то вы делаете это неправильно, вам нужно отсортировать список по JArray["Newcaselist"], и было бы лучше сделать Inplace сортировки, чем использовать sorted() функцию.

Во-вторых, на сегодняшний день вы должны преобразовать даты в объекты даты и времени, используя datetime.datetime.strptime(), пример -

import datetime 
JArray["Newcaselist"].sort(key = lambda x: datetime.datetime.strptime(x["Consultation"]["Date"],'%Y-%m-%d %H:%M:%S')) 
+0

У меня этот объект типа erro 'datetime.datetime' не имеет атрибута 'datetime' ' –

+0

'import datetime', а не' from datetime import datetime', если вы делаете второе, используйте 'datetime.strptime()'. –

+0

Да, но это не сортировка. В том же списке, что и JARRAY JResponse ["caselist"] = JArray JArray.sort (key = lambda x: datetime.strptime (x ["Консультация"] ["Дата"] , '% Y-% m-% d% H:% M:% S'.?)) JResponse [ "Newcaselist"] = JArray Оба возвращают один и тот же массив –

Смежные вопросы