en Python si hago lo siguiente:En Python hay algo así como update que es para actualizar lo que se ordena ordenar?
>>> list = [ 3, 2, 1]
>>> sorted_list = k.sort()
Entonces sorted_list
es None
y list
se ordena:
>>> sorted_list = k.sort()
>>> print list, sorted_list
[1, 2, 3] None
Sin embargo, si hago lo siguiente:
>>> list = [ 3, 2, 1]
>>> sorted_list = sorted(list)
Entonces list
permanece sin clasificar y sorted_list
contiene una copia de la lista ordenada:
>>> print list, sorted_list
[3, 2, 1] [1, 2, 3]
Me pregunto si hay un equivalente para la función update
para los diccionarios.
De esa manera podría hacer algo como esto:
def foo(a, b, extra={}):
bar = { 'first': a, 'second': b }
special_function(**updated(bar, extra))
normal_function(**bar)
en lugar de tener que hacer algo como esto:
def foo(a, b, extra={}):
bar = { 'first': a, 'second': b }
special_bar = bar.copy()
special_bar.update(extra) # [1]
special_function(**special_bar)
normal_function(**bar)
[1] Sí me doy cuenta de que podría simplemente reemplazar estas dos líneas con extra.update(bar)
, pero supongamos que quiero retener extra
como para más adelante en la función.
que se dan cuenta de que podía aplicar esto a mí mismo de esta manera:
def updated(old_dict, extra={}):
new_dict = old_dict.copy()
new_dict.update(extra)
return new_dict
O el siguiente, muy ilegible comunicado en el lugar:
special_function(**(dict(bar.items()+extra.items())))
Pero esperaba que había algo construido en lo que pude ya uso.
Debería * no * usar 'dict' como nombre de variable. También tenga cuidado con los argumentos predeterminados que se pueden cambiar: mejor acceda al hábito de nunca usarlos. –
Tu debería * no * usar 'dict' como nombre de variable, creo que @SvenMarnach significa :) –
@MattLuongo: Gracias. De hecho, dije lo contrario de lo que quise decir. :) –