Utilisez la méthode split()
pour obtenir une liste des mots sentence
:
words = sentence.split()
Ensuite, utilisez la enumerate
fonction intégrée pour construire un générateur qui associe monter numéros avec les mots de la liste. Par défaut enumerate
commence sa numérotation à 0 mais vous voulez qu'il démarre à 1, donc passer cette valeur comme second argument:
numbered_words = enumerate(words, 1)
Ensuite, utilisez la dict
fonction intégrée pour construire un dictionnaire de la sortie de cette Générateur. Heureusement, le générateur émet son nombre (nombre, mot) tuples dans le format correspondant à ce que vous essayez de construire - dict
construit un dictionnaire en utilisant le premier élément du tuple comme clé, le second comme valeur:
sentence_dict = dict(numbered_words)
vous pouvez jAM tout en une seule ligne si vous voulez être laconique:
sentence_dict = dict(enumerate(sentence.split(), 1))
le générateur enumerate
est la seule partie délicate. enumerate
est similaire à xrange
en ce sens qu'il ne renvoie pas de séquence, il renvoie un objet à partir duquel une séquence peut être extraite. Pour démontrer ce qui se passe là-bas, vous pouvez utiliser une boucle for
pour extraire le (nombre, mot) paires à partir d'un générateur enumerate
et les imprimer:
for num, word in enumerate(['a', 'b', 'c', 'd'], 57):
print 'num is', num, 'and word is', word
qui montre ceci:
num is 57 and word is a
num is 58 and word is b
num is 59 and word is c
num is 60 and word is d
Merci de nous aider –