El objetivo de la función es hacer un ajuste de calificación basado en un diccionario y una lista. Por ejemplo
def adjust_grades(roster, grade_adjustment)
adjust_grades({'ann': 75, 'bob': 80}, [5, -5])
Volverá
{'ann': 80, 'bob': 75}
Solo necesito un empujón en la dirección correcta, soy nuevo en Python, así que pensé en poner un bucle anidado para cada número en grade_adjustment, pero no es la forma correcta.
4 respuestas
Suponiendo que Python 3.7 (dictados ordenados) y la longitud de los ajustes coinciden con la longitud de los elementos en el diccionario, puede comprimirlos juntos de la siguiente manera:
for name, adjustment_amount in zip(roster, grade_adjustment):
roster[name] += adjustment_amount
>>> roster
{'ann': 80, 'bob': 75}
Esto está haciendo varias suposiciones:
- el diccionario y la lista tienen la misma longitud (su código final debe asegurarse de que lo hagan)
- está utilizando una versión de python en la que se conserva el orden de las teclas del diccionario (si no, también puede hacer que
grade_adjustment
sea un diccionario, como se menciona en otros comentarios)
result = roster.copy()
for index, key in enumerate(roster):
result[key] += grade_adjustment[index]
Puede usar
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
Esto da salida como dijiste {'ann': 80, 'bob': 75}
Suponiendo 3.7 o dict ordenado e igual longitud:
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]))
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.