Écrivez une fonction get_country(l,name) qui, pour le nom d'une ville name et une structure de données l, retourne le nom du pays dans lequel la ville est localisée. La fonction retourne False si la ville n'est pas dans l.
et voilà ma réponse
def get_country(l,name):
for i in l:
for ci,co in l[i].items():
if name==ci:
return co
else:
return False
Mais j'ai faux. Quelqu'un sait qu'est ce qui cloche dans mon code?
Tu n'as pas besoin d'itérer sur les dictionnaires, ceux-ci possèdent une structure qui est toujours la même.
Ce que tu dois faire, c'est pour chaque dictionnaire tester l'égalité entre la valeur du champ city et le nom donné en paramètre, et renvoyer la valeur du champ country en cas d'égalité.
Aussi, il ne faut pas directement renvoyer False en cas de différence : ce n'est pas parce que la ville n'est pas trouvée dans le premier dictionnaire qu'elle n'existe pas dans un suivant.
C'est tout a fait normal,quand tu fais (ci,co) ce n'est pas le city et country mais la méthode items() du
dictionnaire renvoie un coulpe clé,valeur i.e "City:Bruxelles" ou "Country:Belgique".Le programme renvoie
donc False car il n'y a aucune clé qui se nomme Germany ou Berlin.
Tu dois revoir ta structure de donnée.
Tu n'as pas besoin d'itérer sur les dictionnaires, ceux-ci possèdent une structure qui est toujours la même.
Ce que tu dois faire, c'est pour chaque dictionnaire tester l'égalité entre la valeur du champ city et le nom donné en paramètre, et renvoyer la valeur du champ country en cas d'égalité.
Aussi, il ne faut pas directement renvoyer False en cas de différence : ce n'est pas parce que la ville n'est pas trouvée dans le premier dictionnaire qu'elle n'existe pas dans un suivant.
oui mais comment dissocier les 2 champs justement? autrement que par faire une 2ème boucle (city,country)?
En effet, les listes ne possèdent pas de méthode items, c'est une méthode des dictionnaires.
Mais encore une fois je ne vois pas pourquoi tu en aurais besoin.
Écrivez une fonction get_country(l,name) qui, pour le nom d'une ville name et une structure de données l, retourne le nom du pays dans lequel la ville est localisée. La fonction retourne False si la ville n'est pas dans l.
C'est une aberration de retourner False. Sur le principe, get_country est censé retourner une chaîne de caractères, et donc il est possible d'en retourner une chaîne vide dans le cas où la clé de dictionnaire n'existe pas !
- Edité par fred1599 20 février 2019 à 10:18:47
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Dictionnaires dans une liste
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
#©je code quand je m'ennuie
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)