我想向对象添加信息,从列表中提取该信息。
预期结果将是使对象在打印时(类中的“结果”方法)显示如下内容:
Account name = user1@example.com
Number of failed logins = 3
Number of Origin IPs = 2
OIPs used = ["192.168.1.1", "192.168.1.2"]
Client or protocols = ["SMTP"]
我确实有一个仅包含“ account_name”和构造函数默认值的对象列表。我还列出了所有必需的信息。
具有所有必需信息的列表提取:
list_count_occurrences=[(('user1@example.com', '192.168.1.1', 'SMTP'), 1), (('user2@example.com', '192.168.1.1', 'SMTP'), 6)]
列表末尾的数字属于该特定用户的尝试次数,该用户使用相同的IP并使用相同的协议进行尝试。因此,可以有相同的用户,但来自不同的IP和/或协议。元组中的所有值都是唯一的,这意味着如果同一用户使用另一个IP登录,则该尝试将作为另一个“元组”反映在列表中,并且具有相同的用户,不同的IP,相同的协议和不同的计数
类定义:
class Login():
def __init__(self,account):
self.account_name = account
self.failed_attempts = 0
self.number_of_oips = 0
self.oips = []
self.origins = []
def results(self):
print("Account name =", self.account_name)
print("Number of failed logins =", self.failed_attempts)
print("Number of Origin IPs =", self.number_of_oips)
print("OIPs used =", self.oips)
print("Client or protocols =", self.origins)
这是我失败的循环的最新形式:
for item in list_count_occurrences:
for object in list_of_objects:
if object.account_name == list_count_occurrences[0][0][0]:
object.origins.append(list_count_occurrences[0][0][2])
所以它应该是不错的日志解析器,在打印时变为:
Account name = someuser@example.com
Number of failed logins = 0
Number of Origin IPs = 0
OIPs used = []
Client or protocols = ['SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP', 'SMTP']
就像此循环正在使用“ if”语句中使用的固定位置,而不是使用相对于每个对象进行分析的值。
有什么想法吗?谢谢!!!