2016-04-25 18 views
2

Ich habe eine Liste von Listen, die aus einer MySQL-Abfrage von Nagios gezogen wurden. Ich versuche SORTIEREN in absteigender Reihenfolge in der 3. Spalte, aber auch GROUP die 2. Spalte.Liste der Listen nach zwei Spalten sortieren

[['', 'All Events', 73], ['', 'check_asterisk_calls2-TEL', 1], ['pteln002', 'check_asterisk_calls2-TEL', 1], ['', 'check_asterisk_extension_error-TEL', 1], ['pteln004', 'check_asterisk_extension_error-TEL', 1], ['', 'check_es_snaps-UNX', 1], ['psearchpr005', 'check_es_snaps-UNX', 1], ['', 'check_exchange_mailqueue-WIN', 1], ['pexc001', 'check_exchange_mailqueue-WIN', 1], ['', 'check_health_measure-JVA', 2], ['pwspr031', 'check_health_measure-JVA', 1], ['pwspr049', 'check_health_measure-JVA', 1], ['', 'check_http_prod-JVA', 3], ['putpr002', 'check_http_prod-JVA', 1], ['putpr004', 'check_http_prod-JVA', 1], ['pwspr031', 'check_http_prod-JVA', 1], ['', 'check_jmx_HeapMemoryUsage_background-JVA', 1], ['putpr001', 'check_jmx_HeapMemoryUsage_background-JVA', 1], ['', 'check_localtouch-TEL', 1], ['pteln002', 'check_localtouch-TEL', 1], ['', 'check_nfs_health-UNX', 12], ['psearchpr005', 'check_nfs_health-UNX', 1], ['psearchpr006', 'check_nfs_health-UNX', 1], ['psearchpr007', 'check_nfs_health-UNX', 1], ['psearchpr008', 'check_nfs_health-UNX', 1], ['pteln001', 'check_nfs_health-UNX', 1], ['pteln002', 'check_nfs_health-UNX', 1], ['pteln003', 'check_nfs_health-UNX', 1], ['pteln004', 'check_nfs_health-UNX', 1], ['pteln005', 'check_nfs_health-UNX', 1], ['pteln007', 'check_nfs_health-UNX', 1], ['pteln009', 'check_nfs_health-UNX', 1], ['pteln010', 'check_nfs_health-UNX', 1], ['', 'check_tomcat-sem-UNX', 1], ['rwspr001', 'check_tomcat-sem-UNX', 1], ['', 'check_tomcat-UNX', 1], ['putpr002', 'check_tomcat-UNX', 1], ['', 'check_total_procs-UNX', 1], ['naggy2', 'check_total_procs-UNX', 1], ['', 'check_w305_KC_standby-DBA', 1], ['pdbdrkc01', 'check_w305_KC_standby-DBA', 1], ['', 'CPU-Load-UNX', 9], ['pfspr02', 'CPU-Load-UNX', 1], ['pmsvpr001', 'CPU-Load-UNX', 1], ['psearchpr005', 'CPU-Load-UNX', 1], ['psearchpr006', 'CPU-Load-UNX', 1], ['psearchpr007', 'CPU-Load-UNX', 1], ['putpr001', 'CPU-Load-UNX', 1], ['putpr004', 'CPU-Load-UNX', 1], ['pwspr031', 'CPU-Load-UNX', 1], ['pwspr049', 'CPU-Load-UNX', 1], ['', 'disk-usage-UNX', 1], ['pmsvpr007', 'disk-usage-UNX', 1], ['', 'memory-usage-UNX', 25], ['p0crmpr001', 'memory-usage-UNX', 1], ['p0crmpr002', 'memory-usage-UNX', 1], ['pmsvpr002', 'memory-usage-UNX', 1], ['pmsvpr008', 'memory-usage-UNX', 1], ['pwspr013', 'memory-usage-UNX', 1], ['pwspr014', 'memory-usage-UNX', 1], ['pwspr019', 'memory-usage-UNX', 1], ['pwspr022', 'memory-usage-UNX', 1], ['pwspr024', 'memory-usage-UNX', 1], ['pwspr025', 'memory-usage-UNX', 1], ['pwspr026', 'memory-usage-UNX', 1], ['pwspr027', 'memory-usage-UNX', 1], ['pwspr030', 'memory-usage-UNX', 1], ['pwspr031', 'memory-usage-UNX', 1], ['pwspr032', 'memory-usage-UNX', 1], ['pwspr033', 'memory-usage-UNX', 1], ['pwspr036', 'memory-usage-UNX', 1], ['pwspr041', 'memory-usage-UNX', 1], ['pwspr042', 'memory-usage-UNX', 1], ['pwspr043', 'memory-usage-UNX', 1], ['pwspr044', 'memory-usage-UNX', 1], ['pwspr045', 'memory-usage-UNX', 1], ['pwspr046', 'memory-usage-UNX', 1], ['pwspr049', 'memory-usage-UNX', 1], ['pwspr050', 'memory-usage-UNX', 1], ['', 'new_pending_phone-TEL', 1], ['pdbpr01', 'new_pending_phone-TEL', 1], ['', 'prod-consumer-rating-rewards-JVA', 1], ['Prod-MicroServices', 'prod-consumer-rating-rewards-JVA', 1], ['', 'prod-credit-request-JVA', 1], ['Prod-MicroServices', 'prod-credit-request-JVA', 1], ['', 'prod-ha-spd-update-JVA', 1], ['Prod-MicroServices', 'prod-ha-spd-update-JVA', 1], ['', 'prod-payment-batch-JVA', 1], ['Prod-MicroServices', 'prod-payment-batch-JVA', 1], ['', 'prod-session-log-loader-JVA', 1], ['Prod-MicroServices', 'prod-session-log-loader-JVA', 1], ['', 'prod-sm-caldav-event-JVA', 1], ['Prod-MicroServices', 'prod-sm-caldav-event-JVA', 1], ['', 'prod-sp-task-coverage-indexer-JVA', 1], ['Prod-MicroServices', 'prod-sp-task-coverage-indexer-JVA', 1], ['', 'prod-watcher-JVA', 1], ['Prod-MicroServices', 'prod-watcher-JVA', 1], ['', 'prod-ws-communication-JVA', 1], ['Prod-MicroServices', 'prod-ws-communication-JVA', 1], ['', 'prod-ws-entity-JVA', 1], ['Prod-MicroServices', 'prod-ws-entity-JVA', 1]] 

Hier ist ein Beispiel dafür, was ich ausgeben möchte:

[['', 'All Events', 73], ['', 'memory-usage-UNX', 25], ['p0crmpr001', 'memory-usage-UNX', 1], ['p0crmpr002', 'memory-usage-UNX', 1], ['pmsvpr002', 'memory-usage-UNX', 1], ['pmsvpr008', 'memory-usage-UNX', 1], ['pwspr013', 'memory-usage-UNX', 1], ['pwspr014', 'memory-usage-UNX', 1], ['pwspr019', 'memory-usage-UNX', 1], ['pwspr022', 'memory-usage-UNX', 1], ['pwspr024', 'memory-usage-UNX', 1], ['pwspr025', 'memory-usage-UNX', 1], ['pwspr026', 'memory-usage-UNX', 1], ['pwspr027', 'memory-usage-UNX', 1], ['pwspr030', 'memory-usage-UNX', 1], ['pwspr031', 'memory-usage-UNX', 1], ['pwspr032', 'memory-usage-UNX', 1], ['pwspr033', 'memory-usage-UNX', 1], ['pwspr036', 'memory-usage-UNX', 1], ['pwspr041', 'memory-usage-UNX', 1], ['pwspr042', 'memory-usage-UNX', 1], ['pwspr043', 'memory-usage-UNX', 1], ['pwspr044', 'memory-usage-UNX', 1], ['pwspr045', 'memory-usage-UNX', 1], ['pwspr046', 'memory-usage-UNX', 1], ['pwspr049', 'memory-usage-UNX', 1], ['pwspr050', 'memory-usage-UNX', 1], ['', 'check_nfs_health-UNX', 12], ['psearchpr005', 'check_nfs_health-UNX', 1], ['psearchpr006', 'check_nfs_health-UNX', 1], ['psearchpr007', 'check_nfs_health-UNX', 1], ['psearchpr008', 'check_nfs_health-UNX', 1], ['pteln001', 'check_nfs_health-UNX', 1], ['pteln002', 'check_nfs_health-UNX', 1], ['pteln003', 'check_nfs_health-UNX', 1], ['pteln004', 'check_nfs_health-UNX', 1], ['pteln005', 'check_nfs_health-UNX', 1], ['pteln007', 'check_nfs_health-UNX', 1], ['pteln009', 'check_nfs_health-UNX', 1], ['pteln010', 'check_nfs_health-UNX', 1], ['', 'CPU-Load-UNX', 9], ['pfspr02', 'CPU-Load-UNX', 1], ['pmsvpr001', 'CPU-Load-UNX', 1], ['psearchpr005', 'CPU-Load-UNX', 1], ['psearchpr006', 'CPU-Load-UNX', 1], ['psearchpr007', 'CPU-Load-UNX', 1], ['putpr001', 'CPU-Load-UNX', 1], ['putpr004', 'CPU-Load-UNX', 1], ['pwspr031', 'CPU-Load-UNX', 1], ['pwspr049', 'CPU-Load-UNX', 1], ['', 'check_http_prod-JVA', 3], ['putpr002', 'check_http_prod-JVA', 1], ['putpr004', 'check_http_prod-JVA', 1], ['pwspr031', 'check_http_prod-JVA', 1], ['', 'check_health_measure-JVA', 2], ['pwspr031', 'check_health_measure-JVA', 1], ['pwspr049', 'check_health_measure-JVA', 1], ['', 'prod-ws-entity-JVA', 1], ['Prod-MicroServices', 'prod-ws-entity-JVA', 1], ['', 'prod-ws-communication-JVA', 1], ['Prod-MicroServices', 'prod-ws-communication-JVA', 1], ['', 'prod-watcher-JVA', 1], ['Prod-MicroServices', 'prod-watcher-JVA', 1], ['', 'prod-sp-task-coverage-indexer-JVA', 1], ['Prod-MicroServices', 'prod-sp-task-coverage-indexer-JVA', 1], ['', 'prod-sm-caldav-event-JVA', 1], ['Prod-MicroServices', 'prod-sm-caldav-event-JVA', 1], ['', 'prod-session-log-loader-JVA', 1], ['Prod-MicroServices', 'prod-session-log-loader-JVA', 1], ['', 'prod-payment-batch-JVA', 1], ['Prod-MicroServices', 'prod-payment-batch-JVA', 1], ['', 'prod-ha-spd-update-JVA', 1], ['Prod-MicroServices', 'prod-ha-spd-update-JVA', 1], ['', 'prod-credit-request-JVA', 1], ['Prod-MicroServices', 'prod-credit-request-JVA', 1], ['', 'prod-consumer-rating-rewards-JVA', 1], ['Prod-MicroServices', 'prod-consumer-rating-rewards-JVA', 1], ['', 'new_pending_phone-TEL', 1], ['pdbpr01', 'new_pending_phone-TEL', 1]] 

Es gibt ein paar aus dem Beispiel fehlt, weil ich es von Hand zu tun hatte, aber die Idee ist alles drin.

Ich dachte, ich hätte die Antwort mit dem folgenden, aber es ist nicht einmal in der Nähe.

weeklyreport = sorted(weeklyreport, key = lambda x: (x[2], x[1]), reverse=True) 

Jede Hilfe würde geschätzt.

+0

Warum tun Sie es nicht, indem Sie Ihre SQL-Abfrage ändern? Ich bin mir ziemlich sicher, dass es besonders bei großen Datensätzen weniger Zeit in Anspruch nehmen würde. Was Ihr Problem betrifft, sollten Sie sich die Funktion ['groupby'] (https://docs.python.org/2/library/itertools.html#itertools.groupby) ansehen. – ozgur

+0

Ich hatte auch Probleme mit der MySQL-Abfrage. Ich dachte, ich hätte mehr Glück in Python. – tynick

+0

http://stackoverflow.com/questions/36903637/mysql-order-by-category-and-subcategory Niemand scheint auch dort zu wissen. – tynick

Antwort

0

Sie waren eigentlich ziemlich nah dran.

weeklyreport = sorted(weeklyreport, key=lambda x: (x[1], -x[2])) 

Dies wird Gruppe von der zweiten Spalte, sich alphabetisch sortiert wird, und jede Gruppe in absteigender Reihenfolge sortiert werden wird.

+0

Das hat bei mir nicht funktioniert. Die Summe war unten und die Warnungen waren immer noch nicht in absteigender Reihenfolge. – tynick

+0

Ich habe einen Schnitt gemacht. Probieren Sie die aktualisierte Version – wim

Verwandte Themen