2016-04-25 3 views

Répondre

1

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 
+0

Merci pour ton aide –