To zalezy co chcesz zrobic. Metoda keys() zwraca view object ktory np. pozwala manipulowac elementami slownika podczas iteracji, czego nie mozesz zrobic podczas iteracji po "golym" slowniku.
Tak wiec jesli nie zamierzasz nic modyfikowac (albo chcesz miec pewnosc ze nic ci twojego ficta nie modyfikuje) mozesz iterowac po dict'cie bezposrednio. Jesli jednak chcesz modyfikowac go w czasie iteracji - uzyj keys().
Zycie nauczylo mnie ze w przypadku pythona nie warto zdawac sie na intuicje ;) chyba ze masz ta intuicje wycwiczona w kierunku pythona. Wszystkie metody wbudowane sa wielokrotnie szybsze niz budowanie ich odpowiednikow w golym pythonie (np. list comprehension vs petla + reczne wypelnianie listy; petla for jest szybsza niz while z incrementacja warunku) - poniewaz pod "maska" pythona siedzi sobie C++ ktory pokazuje na co go stac. W tym przypadku tez.
@vogello: No wiesz, nie zupełnie. Pod maską pewnie Python tworzy osobną tablicę ze shaszowanymi kluczami, którą po iteracji pewnie wykorzystuje do nadpisania oryginalnych kluczy. Co prawda - jak mówisz różnica na ogół niewielka ale przy większych dictach może już być problem.
Pod maską pewnie Python tworzy osobną tablicę ze shaszowanymi kluczami, którą po iteracji pewnie wykorzystuje do nadpisania oryginalnych kluczy
@horus666: Zycie nauczylo mnie ze w przypadku pythona nie warto zdawac sie na intuicje ;) chyba ze masz ta intuicje wycwiczona w kierunku pythona. Wszystkie metody wbudowane sa wielokrotnie szybsze niz budowanie ich odpowiednikow w golym pythonie (np. list comprehension vs petla + reczne wypelnianie listy; petla for jest szybsza niz while
keys()zwracaview objectktory np. pozwala manipulowac elementami slownika podczas iteracji, czego nie mozesz zrobic podczas iteracji po "golym" slowniku.Tak wiec jesli nie zamierzasz nic modyfikowac (albo chcesz miec pewnosc ze nic ci twojego ficta nie modyfikuje) mozesz iterowac po dict'cie bezposrednio. Jesli jednak chcesz modyfikowac go w czasie iteracji - uzyj
keys().@horus666: Zycie nauczylo mnie ze w przypadku pythona nie warto zdawac sie na intuicje ;) chyba ze masz ta intuicje wycwiczona w kierunku pythona. Wszystkie metody wbudowane sa wielokrotnie szybsze niz budowanie ich odpowiednikow w golym pythonie (np. list comprehension vs petla + reczne wypelnianie listy; petla for jest szybsza niz while