我有这个项目,我需要处理大型访问日志并获取所有用户上次登录尝试的列表。在处理日志时,我已经达到了这样的目的:
[user1, <last login recorded>, <current login>]
[user2, <no last login recorded>, <current login>]
[user1, <last login recorded>, <current login>]
[user3, <last login recorded>, <current login>]
如您所见,同一用户记录了多次登录。我想只获得最终列表的最新登录信息。
我正在使用datetime对象进行登录,因此比较当前和最后一个很容易,但我的问题是:如何暂时保存当前最新的登录并将其与下一个登录进行比较?
简化代码如下所示
final_list = []
for login in log_file:
login = login.split(';')
last_login = get_last_login() #ldap search for the user last login
if last_login:
final_list.append([login[0], last_login, login[1]])
else:
final_list.append([login[0], 'no_last_login_recorded', login[1]])
因此,如果我将每个登录附加到final_list [],是否有办法检查用户是否已经在那里并将当前登录名与列表中的登录名进行比较?
答案 0 :(得分:1)
正如@gkunser指出的那样,你可以简单地将一个字典({}
)键入用户这样的东西:
final_list = {}
for login in log_file:
login = login.split(';')
last_login = get_last_login();
if last_login:
final_list[login[0]] = (last_login, login[1]])
...
这样您就会自动覆盖用户登录信息
[这个伪代码用于表示一个不正确的集合]