Le but de la fonction est de faire un ajustement de note basé sur un dictionnaire et une liste. Par exemple,
{'ann': 80, 'bob': 75}
retournera
def adjust_grades(roster, grade_adjustment)
adjust_grades({'ann': 75, 'bob': 80}, [5, -5])
J'ai juste besoin d'un coup de pouce dans la bonne direction, je suis nouveau sur Python alors j'ai pensé à mettre une boucle for imbriquée pour chaque num dans grade_adjustment mais ce n'est pas la bonne façon.
4 Réponses :
Ceci fait plusieurs hypothèses:
grade_adjustment un dictionnaire, comme mentionné par d'autres commentaires) result = roster.copy()
for index, key in enumerate(roster):
result[key] += grade_adjustment[index]
Ah! Très utile, cela a beaucoup de sens. Je vais essayer ceci, merci.
Vous pouvez utiliser
def adjust_grades(roster, grade_adjustment):
for k, v in enumerate(grade_adjustment):
roster[list(roster.keys())[k]] = roster[list(roster.keys())[k]] + v
return roster
Cela donne la sortie comme vous l'avez dit {'ann': 80, 'bob': 75}
p >
Je vais essayer cela aussi, merci beaucoup pour votre aide!
en supposant 3.7 ou dict ordonné et de longueur égale:
def adjust_grades(roster, grade_adjustment):
return {key:value + adjustment for (key, value), adjustment in
zip(roster.items(), grade_adjustment)}
print(adjust_grades({'ann': 75, 'bob': 80}, [5, -5]))
En supposant que Python 3.7 (dictés ordonnés) et la longueur des ajustements correspondent à la longueur des éléments du dictionnaire, vous pouvez zippez les ensemble comme suit:
for name, adjustment_amount in zip(roster, grade_adjustment):
roster[name] += adjustment_amount
>>> roster
{'ann': 80, 'bob': 75}
Solution très simple et facile à suivre - merci!
Vous devriez essayer de définir votre dictionnaire comme un
OrderedDict. Ou définissez votregrade_adjustmentcomme un dictionnaire:{'ann': 5, 'bob': -5}@ J.Murray, c'était vrai jusqu'au 3.6. En 3.6, la fonction de préservation de l'ordre était considérée comme un détail de mise en œuvre. Dans 3.7+, la fonction de préservation de l'ordre est garantie
Le
grade_adjustmentdoit également être un dictionnaire. Ensuite,pour le nom, adj dans grade_adjustment.items (): roster [name] + = adj@Buran Nice! C'est une édition solide. Je pense que je considérerais toujours des alternatives plutôt que de me fier à cela (surtout si vous ne savez pas quelle version de l'interpréteur le code peut être exécuté via)
@Alexander Cela a beaucoup de sens, malheureusement c'est une solution que je ne peux pas utiliser pour cette mission. Cela DOIT être une liste.