For循环从元组列表填充对象信息

时间:2018-11-04 13:24:48

标签: python

我想向对象添加信息,从列表中提取该信息。

预期结果将是使对象在打印时(类中的“结果”方法)显示如下内容:

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”语句中使用的固定位置,而不是使用相对于每个对象进行分析的值。

有什么想法吗?谢谢!!!

0 个答案:

没有答案