0
votes

Comment ajouter des chiffres dans la liste des doublons

J'ai recueilli des données à partir de fichier TXT et je l'ai rendue à la liste (en réalité, il y a beaucoup plus de joueurs, il est donc impossible de compter sans boucle), comme: xxx

et Je veux ajouter l'objectif de chaque khan et daniel et faire une liste comme: xxx

J'ai une liste de noms ( nom_list = [khan, daniel] )

J'ai essayé de faire avec la boucle, comme: xxx

et il n'a pas fonctionné. Je suis très novice, alors vos commentaires seront une très grande aide. Merci!


6 commentaires

/ Wjandrea j'ai corrigé des problèmes que vous avez pointés. En fait, je n'ai pas compris votre solution


merci pour des problèmes de pointage ... j'étais tellement idiot


Et si ce n'est pas très difficile, pouvez-vous montrer comment utiliser le contre-chose dans mon problème? Je n'ai pas compris en lisant la page que vous avez liée.


Bienvenue. Cela nous arrive à tous au début :) Bien sûr, je posterai une réponse.


Utilisez simplement un compteur, c'est une approche beaucoup plus simple et plus efficace. Vous pouvez trouver de nombreux exemples en ligne mais un bon serait quelque chose comme ça pymotw.com/2/collections /counter.html


(Fyi j'ai nettoyé mes commentaires qui ne sont plus nécessaires et vous pouvez faire de même.)


4 Réponses :


2
votes

Vous pouvez créer un dictionnaire pour conserver le numéro de somme de buts, avec les noms comme touches. Cela facilitera la tâche d'accéder aux valeurs:

result = [[key, value] for key, value in d.items()]


1 commentaires

FWIW, une initialisation plus simple: buals_dict = dict.fromkeys (nom_list, 0)



1
votes

Dans votre code ci-dessus, vous incrémentez la valeur de num code> sans la définition d'abord. Vous voudrez l'initialiser à 0 en dehors de votre interne pour la boucle. Vous auriez alors appendez le nom / but à la liste comme ceci:

for i in name_list:
    #Init num
    num = 0
    # Iterate through each data entry
    for j in data_list:
        if i == j[2]:
            # Increment goal count for this player
            num+= int(j[3])
    # Append final count to goal list
    goal.append([i, num])


0 commentaires

3
votes

Votre code est très proche du travail, il existe une erreur de syntaxe et un seul problème réel.

Le problème est que vous êtes ajouté num code> trop tôt. Vous devez résumer sur des lignes contenant le nom que vous recherchez, alors, une fois que toutes les lignes ont été observées ajoute la valeur: p> xxx pré>

d'autre part, cette stratégie n'est pas la Plus efficace depuis pour chaque nom, le code itérez sur toutes les lignes. Vous pouvez (en utilisant dictionnaires pour stocker des résultats intermédiaires) besoin d'un seul look Sur chaque rangée, indépendamment du nombre de "noms" que vous recherchez. P>

goal = defaultdict(int)
for row in data_list[1:]:
    goal[row[2]] += int(row[3])


0 commentaires

1
votes

Ne vous inquiétez pas de le faire manuellement. Utilisez un compteur à la place: xxx


0 commentaires