J'ai un fichier CSV et chaque fois que je mets à jour avec des données, je veux dire des lignes ... deux choses maintenant que je veux faire mais je ne peux pas. Comment puis-je supprimer la liste en double en fonction de cela

Contribution:

[name , age , school]
[jack, 76, oxford ],
[march , 32, cfr],
[bee, 43, oi],
[jack ,15, iuy]

Production:

[name , age , school],
[jack, 76, oxford ],
[march , 32, cfr],
[bee, 43, oi]

REMARQUE: set (list) ne fera rien à mon cas

Comme vous pouvez le voir, la deuxième prise n'a pas été ajoutée à la liste _ c'est ce que je veux

Et (deuxième chose) comment puis-je maintenant quand je reçois de nouvelles lignes.

0
Jacky 2 sept. 2020 à 13:35

2 réponses

Meilleure réponse
  1. Utilisez set pour garder une trace des noms ajoutés
  2. Faites une boucle sur les éléments de la liste:
    2.1. Si le nom actuel n'est pas ajouté
    2.2. Ajouter l'élément actuel
    2.3. Ensemble de mise à jour
original_list = [['name', 'age', 'school'],
['jack', '76', 'oxford '],
['march', '32', 'cfr'],
['bee', '43', 'oi'],
['jack', '15', 'iuy']]

added_names = set()
filtered_list = []
for item in original_list:
    current_name = item[0]
    if current_name not in added_names:
        filtered_list.append(item)
        added_names.add(current_name)

print(filtered_list)

Production:

['name', 'age', 'school'], 
['jack', '76', 'oxford '], 
['march', '32', 'cfr'], 
['bee', '43', 'oi']

Pour mettre à jour, vérifiez simplement si le nom existe déjà dans l'ensemble.

0
Aviv Yaniv 2 sept. 2020 à 10:46
all_list = []

#beforeUpdating
for j in all_list:
    if j == csvlist[0] #considering all names are on index - 1:
        #cancel upload
        break
    
#AfterUpdating
for i in csvlist:
    all_list.append(i)

Je peux vous fournir ceci car vous n'avez pas posté votre code. J'espère que cela vous donne une idée.

0
Alvis矜 2 sept. 2020 à 10:46