Python是dict还是list更适合高效地存储和搜索这些数据?

2024-04-20 11:37:10 发布

您现在位置:Python中文网/ 问答频道 /正文

场景如下:

  1. 我正在解析一个日志文件,并将日志文件中的每一行(字符串)转换为一个层次结构。我希望能够将每条消息分类为属于特定日期的特定事件。你知道吗
  2. 我试图将这个数据结构发送到我的Django应用程序的前端,并显示这个层次结构,防止前端处理所有这些计算。你知道吗
  3. 在前端,我想能够搜索关键字和显示结果,这样做。我可以搜索后端发送的数据结构,也可以搜索呈现的DOM。你知道吗

我有以下数据:

Day 1
   Event 1
      message
      message
      message
   Event 2
      message
      message
      message
   Event 3
      message
      message
      message
Day 2
   Event 1
      message
      message
      message
   Event 2
      message
      message
      message

...

数据

日志文件中的一个事件如下所示:

2019-08-05 09:18:45 -- INFO -- all buttons -- THOR: All button were pressed.
2019-08-05 09:18:48 -- WARNING -- THOR1: The system failed to connect. Is the asset online? If so, did the password change?
2019-08-05 09:18:51 -- WARNING -- THOR2: The system failed to connect. Is the asset online? If so, did the password change?
2019-08-05 09:18:51 -- WARNING -- THOR3: Looks like it's online, but the system was unable to log in.
2019-08-05 09:18:51 -- WARNING -- THOR4: Looks like it's online, but the system was unable to log in.
2019-08-05 09:18:51 -- WARNING -- THOR5: Looks like it's online, but the system was unable to log in.
2019-08-05 09:18:52 -- WARNING -- THOR6: Looks like it's online, but the system was unable to log in.

我目前的方法

到目前为止,我的数据存储(非常粗糙)为

Day 1    Event 1               Event 2              Day 2     Event 1
  |         |                    |                    |          |
  |         |                    |                    |          |
  |  _______|                    |                    |  ________|
  | |                            |                    | |
[ [ [message, message, message], [message, message]], [ [message, message], ... ], ... ]

也许是更好的方法?

{

   '08/05/2019': {
      '09:18': [message, message, message],
      '10:30': [message, message, message, message],
      '14:40': [message]
   }

   '08/03/2019': {
      '06:40': [message, message],
      '17:25': [message, message]
   }

}

结论

我需要保持顺序,这样我就可以在前端按时间顺序显示这些内容,但是对于这样的内容,dict会更有效吗?这可能是可行的,因为Python dicts now maintain insertion order。你知道吗

哪种数据结构更适合存储和搜索?我应该注意到,我可能要处理大约60000条消息。你知道吗


Tags: thetoeventlogmessageitsystemlike