2016-04-25 143 views
2

我有一个列表,这些列表是从Nagios的MySQL查询中提取的。我试图在第三列按降序排序,而在GROUP第二列也是如此。按两列对列表进行排序

[['', '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]] 

这里有什么想我要输出的例子:

[['', '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]] 

有几个从这个例子里缺,因为我必须做手工,但这个想法是所有在那里。

我以为我有以下答案,但它甚至没有接近。

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

任何帮助,将不胜感激。

+0

你为什么不通过修改你的sql查询来做到这一点?我相当确定这将花费更少的时间,特别是对于大型数据集。至于你的问题,你可能想看看['groupby'](https://docs.python.org/2/library/itertools.html#itertools.groupby)函数。 – ozgur

+0

我也遇到了mysql查询的问题。我以为我会在Python中获得更好的运气。 – tynick

+0

http://stackoverflow.com/questions/36903637/mysql-order-by-category-and-subcategory没有人似乎知道如何在那里。 – tynick

回答

0

你真的很接近,实际上。

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

这将按第二列进行分组,按字母顺序进行排序,每个组按降序排序。

+0

那个不适合我。总数处于最低点,警报仍然没有降序排列。 – tynick

+0

我做了一个编辑。尝试更新的版本 – wim