Comment utiliser deux keys dans groupby

Fermé
Utilisateur anonyme - Modifié le 6 juil. 2020 à 13:08
yg_be Messages postés 22804 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 mai 2024 - 6 juil. 2020 à 14:55
Je voudrais incrémenter un compteur des critères. Pour cela, j'ai utilisé la fonction sorted et groupby


from itertools import groupby
  
def tcp_seq(p):
    return p['TCP'].seq

def tcp_ack(p):
    return p['TCP'].ack
  
def groups_by_seq(s):
    x = sorted((p for p in s if p.haslayer('TCP')), key=tcp_seq)
    y = [(k, list(g)) for k, g in groupby(x, key=tcp_seq)]
    return [(seq, group) for seq, group in y if len(group) > 1]
  
def duplication_pkt_count(s, s_ip, c_ip):
    sCount = 0
    cCount = 0
   
    for seq, group in groups_by_seq(s):
        for p in group:
            if p.haslayer(IP):
                if (p[IP].src == s_ip):
                    sCount += 1
                if (p[IP].src == c_ip):
                    cCount += 1
    return (sCount, cCount)





Maintenant je veux que mon compteur s'incrémente selon deux critères: quand on trouve et le numéro de tcp.seq et le numéro ack en double. Quand j'ai tcp.seq et tcp.ack en double le compteur s'incrémente. Je ne sais pas comment ajouter un second critère dans groupby. Une idée ?
A voir également:

1 réponse

yg_be Messages postés 22804 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 mai 2024 1 469
6 juil. 2020 à 14:08
bonjour,
ne suffit-il pas d'utiliser une clé qui regroupe seq et ack?
0
Utilisateur anonyme
6 juil. 2020 à 14:11
Oui mais comment ?
0
yg_be Messages postés 22804 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 mai 2024 1 469 > Utilisateur anonyme
6 juil. 2020 à 14:55
comme tu as écrit ce programme, tu connais bien python.
comment peut-on regrouper plusieurs éléments en python?
0