1
votes

comparer les valeurs entre trois listes en python retourne le nombre de produits dupliqués

Bonjour j'ai essayé de résoudre ce problème sans succès, j'aimerais savoir comment je peux le résoudre en python:

name = ['ball', 'jeans','ball']
price = [1, 4, 1]
weight = [2, 2, 2]

def productDuplicates(name, price, weight):




if __name__ == "__main__":
    productDuplicates(name, price, weight)

Je dois renvoyer un entier avec le nombre de produits en double. Les trois listes peuvent contenir n éléments mais pour simplifier la question, je n'en ai ajouté que trois, de sorte qu'un produit est considéré comme dupliqué le nom, le prix et le poids doivent être égaux


5 commentaires

Qu'est-ce qui est considéré comme un produit en double? qu'avez-vous essayé?


Le problème me semble assez clair. Votre problème est que vous n'avez montré aucune tentative de solution. Nous sommes là pour vous aider et non pour résoudre votre problème à votre place.


Un produit en double est un produit dont le nom, le prix et le poids sont les mêmes, si vous regardez les trois listes dans lesquelles se trouvent les produits en double: nom [0] nom [2] prix [0] prix [2] poids [0] poids [ 2] Ce problème m'a été présenté dans une offre d'emploi et j'ai été raccroché, j'ai essayé de compresser les 3 listes en une avec la fonction zip (), regrouper les valeurs de cette façon [('ball', 1 , 2), ('jeans', 4, 2), ('ball', 1, 2)] après cela j'ai raccroché sans savoir comment les comparer @ Akaisteph7


Un produit en double est un produit dont le nom, le prix et le poids sont les mêmes, si vous regardez les trois listes dans lesquelles se trouvent les produits en double: nom [0] nom [2] prix [0] prix [2] poids [0] poids [ 2] Ce problème m'a été présenté dans une offre d'emploi et j'ai été raccroché @Sayse


Vous nous avez donc demandé de résoudre une question pour laquelle vous êtes spécifiquement payé? Veuillez lire Comment demander et montrer ce que vous avez fait vous-même.


4 Réponses :


0
votes

La fonction ci-dessous crée une liste de produits avec des noms, des prix et des poids sous forme de tuple, puis parcourt tous les produits et ajoute les doublons à un ensemble, puis renvoie la longueur définie.

name = ['ball', 'jeans','ball']
price = [1, 4, 1]
weight = [2, 2, 2]

def productDuplicates(name, price, weight):
  products_list = list(zip(name, price, weight))
  duplicates = set()
  for p in products_list:
    if products_list.count(p) > 1:
      duplicates.add(p)
  return len(duplicates)


if __name__ == "__main__":
    print(productDuplicates(name, price, weight))


1 commentaires

Salut, merci pour votre solution, je pense que c'est une bonne option, en termes de performances je pense que c'est la plus efficace @Lucas



-1
votes

vous pouvez utiliser zip() pour combiner les propriétés (dans ce cas le nom, le prix et le poids) dans un tuple et supprimer les doublons en utilisant un ensemble, voici votre méthode productDuplicates:

def productDuplicates(name, price, weight):
    temp_list = list()
    for each_product in zip(name,price,weight):
        temp_list.append(each_product)

    return len(temp_list) - len(set(temp_list)) #set keeps the unique elements


0 commentaires

0
votes

l'approche la plus courante que j'ai vue pour identifier un certain nombre de doublons dans les listes consiste à utiliser un ensemble, puis à comparer la longueur de celui-ci à la longueur de la liste. C'est très simple en termes de lignes de code:

name = ['ball', 'jeans','ball']
price = [1, 4, 1]
weight = [2, 2, 2]

def productDuplicates(name, price, weight):
    l = list(zip(name, price, weight))
    return(len(l)-len(set(l)))


1 commentaires

Bonjour, merci pour votre réponse rapide, en termes de performances, vous utiliseriez cette approche ou une approche en boucle. @Sammy



0
votes
name = ['ball', 'bat', 'glove', 'glove', 'glove', 'ball']
price = [2, 3, 1, 2, 1, 2]
weight = [2, 5, 1, 1, 1, 2]


def numDuplicates(name, price, weight):
    all = []
    seen = []
    dup = []
    i = 0

    for n in name:
        all.append([n, price[i], weight[i]])
        i += 1

    for good in all:
        if good not in seen:
            seen.append(good)
        else:
            dup.append(good)

    print("seen", seen)
    print("dup", dup)


if __name__ == '__main__':
    numDuplicates(name, price, weight)

0 commentaires