python - 在 Python 中按比较值排序

标签 python sorting compare

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/

相关文章:

python - 在 sql 和 pyodbc 中参数化 TOP 值

Python:按值对字典进行排序,同时在出现联系时按字母顺序维护

python - 按python中的值对字典进行排序

c# - 尝试比较 C# 中的字符

python - 函数调用后的方括号

python - 在通用 Web 平台上从 HTML 执行 Python

python - 为什么 Python 的标准库中没有排序容器?

PHP 通过另一个数组(表)按键对数组进行排序

python - 如何在 Python 3 中自定义我自己的比较函数

java - 速度分析器 - 基于参数类型的抽象方法或开关