J'écris un code pour garder une trace des médailles gagnées par des pays qui sont renvoyés comme une liste des chaînes. Exemple de format: voici mon code jusqu'à présent: p> devrait revenir: p> Je reçois une erreur de type sur la ligne 20: p> Je ne sais pas pourquoi.
Quelqu'un peut-il expliquer comment je pourrais résoudre ce problème?
Merci d'avance! P> p>
3 Réponses :
Vous avez eu quelques problèmes avec votre code:
Voici une version de travail mise à jour p> sortie p>
Votre problème existe dans cette ligne:
Lorsque vous Lorsque vous l'exécutez: p> remarquer comment le la solution est soit simplement utiliser médaaltracker = [medaltracker.append (i) pour i in Allcountries] code> p>
APPendez code > A
Liste code>, il modifie la liste
code> en place mais renvoie
Aucun code>. Vous pouvez voir un peu plus plus clairement plus clair ce qui se passe ici: p>
Medaltracker CODE> ID d'objet et valeurs ont changé après la compréhension de votre liste? C'est parce qu'après la compréhension de la liste terminée la boucle et l'adhension de la liste, il a également créé une liste de
Aucun code> s et réaffectant cette liste (un nouvel objet) pour remplacer votre médaillier code> existant code>.
MedAlTracker = liste (Allcountries) code>, ou si vous souhaitez ajouter, utilisez A pour la boucle: P>
for i in allCountries:
medalTracker.append(i)
Tout d'abord, il est généralement fronça les sourcils pour utiliser des lettres majuscules pour autre chose que des classes. Se déplacer sur ...
def generate(results): """ return list of strings based on data in results, a list of strings """ # [country_code, gold_count, silver_count, bronze_count ] allCountries = [] for i in results: x = i.split() for country in x: allCountries.append(country) allCountries = list(set(allCountries)) medalTracker = [] # medalTracker = list(medalTracker) for i in allCountries: goldCount, silverCount, bronzeCount = 0, 0, 0 index = allCountries.index(i) for rank in results: rank = rank.split(' ') if rank[0] == i: goldCount += 1 elif rank[1] == i: silverCount += 1 elif rank[2] == i: bronzeCount += 1 medalTracker.append({i: {'goldCount': goldCount, 'silverCount': silverCount, 'bronzeCount': bronzeCount}}) print(generate(["ITA JPN AUS", "KOR TPE UKR", "KOR KOR GBR", "KOR CHN TPE"]))
Vérifiez
médaaltracker code>. Il contient des non. Pourquoi êtes-vous ajouté dans une compréhension de la liste?
Medaltracker = [MedalTracker.Append (i) pour I dans Allcountries] code> est identique à
Medaltracker = Liste (Allcountries) Code>;)
Voulez-vous dire
médaaltracker = liste (AllCountries) code>?
@azro pas tout à fait,
[i pour i dans Allcountries] code> serait équivalent
@azro Nope,
Medaltracker code> sera tout
Aucun code> s. Pas équivalent.
Ne voyez pas la valeur de Haha, laissez-vous pour ce post: D
Votre intention est-elle juste de créer une copie peu profonde de
AllCountries code>?
médaaltracker.append (i) code> renvoie
Aucun code> mais ajoute la liste à sa place. C'est ce qui vous cause une erreur.
Je pense que vous voulez probablement que MedalTracker soit un dictionnaire code> qui détient les valeurs de
allCountries code> comme clé code> et valeurs dans
résultats code> comme leur
valeurs code>.