W python jeśli I wykonaj następujące czynności:W pythonie jest coś takiego jak zaktualizowane, aby zaktualizować sortowane pliki?
>>> list = [ 3, 2, 1]
>>> sorted_list = k.sort()
Następnie sorted_list
jest None
i list
jest posortowana:
>>> sorted_list = k.sort()
>>> print list, sorted_list
[1, 2, 3] None
Jednakże, jeśli I wykonaj następujące czynności:
>>> list = [ 3, 2, 1]
>>> sorted_list = sorted(list)
Następnie list
pozostaje nieposortowany i sorted_list
zawiera kopię posortowanej listy:
>>> print list, sorted_list
[3, 2, 1] [1, 2, 3]
Zastanawiam się, czy istnieje odpowiednik dla funkcji update
do słowników.
ten sposób mógłby zrobić coś takiego:
def foo(a, b, extra={}):
bar = { 'first': a, 'second': b }
special_function(**updated(bar, extra))
normal_function(**bar)
zamiast zrobić coś takiego:
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] Tak zdaję sobie sprawę, może po prostu zastąpić te dwie linie z extra.update(bar)
, ale załóżmy, że chcę zachować extra
, tak jak na później w funkcji.
Zdaję sobie sprawę, mogłem realizować ten sam wygląda następująco:
def updated(old_dict, extra={}):
new_dict = old_dict.copy()
new_dict.update(extra)
return new_dict
lub kolejny bardzo nieczytelny oświadczenie w miejscu:
special_function(**(dict(bar.items()+extra.items())))
ale miałem nadzieję, że coś zbudowany w które mogłem już używam.
Powinieneś * nie * używać 'dict' jako nazwy zmiennej. Zwróć też uwagę na zmienne argumenty domyślne - lepiej weź się w nawyk, aby nigdy ich nie używać. –
Twój powinien * nie * używać 'dict' jako nazwy zmiennej, myślę, że @SvenMarnach znaczy :) –
@MattLuongo: Dzięki. Rzeczywiście powiedziałem coś przeciwnego do tego, co miałem na myśli. :) –