Python 新手需要帮助!
我有一个结构文件:
[timestamp] [level] [source] message
其中包含以下几行(例如):
[Wed Oct 11 14:34:52 2000] [error] [client 127.0.0.1] error message
[Wed Oct 11 18:56:52 2000] [warning] [client 127.0.0.1] error message
[Wed Oct 11 22:15:52 2000] [critical] [client 127.0.0.1] error message
我需要按 [level] 对这些行进行排序并在 STDOUT 中显示结果。但是有两个条件:我们必须有机会选择用于排序的[level]名称,并且所有具有较高[level]的行也应该被显示。
[level] values:
critical = 50
error = 40
warning = 30
info = 20
debug = 10
我决定用西装做这个:
suits = {'critical': 50, 'error': 40, 'warning': 30}
l = ['critical','error','warning']
print sorted(l, key=suits.get)
但我想这不是最好的方法。
我希望你能帮我解决这个问题......
最佳答案
我会把它分成两部分:
1) 编写一个函数,给定一行文件,返回层数。第 2 部分调用此 level_number。
2) 在您选择的排序调用中将该函数与 key 参数一起使用:
with open(fname) as f:
sorted_lines = sorted(f, key=level_number)
1) 的函数可以用 split 或正则表达式创建。
关于python - 在 Python 中按比较值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6655707/