2010-12-29 17 views

Odpowiedz

76

W Pythonie 2.x oba dają taki sam wynik. Różnica między nimi polega na tym, że items tworzy listę zawierającą całą zawartość słownika, podczas gdy iteritems daje iterator, który pobiera elementy po jednym na raz. Ogólnie rzecz biorąc iteritems jest lepszym wyborem, ponieważ nie wymaga tak dużo pamięci. Ale tutaj sortujesz wynik, więc prawdopodobnie nie spowoduje to żadnej znaczącej różnicy w tej sytuacji. Jeśli masz wątpliwości, iteritems to bezpieczny zakład. Jeśli wydajność naprawdę ma znaczenie, zmierz oba i sprawdź, która jest szybsza.

w Pythonie 3.x iteritems został usunięty items i teraz robi to, co iteritems czynili, rozwiązując problem programistów tracić czasu martwiąc się o co jest lepsze. :)

Uwaga: jeśli liczą się wystąpienia słów, warto rozważyć użycie collections.Counter zamiast zwykłego dicta (wymaga Python 2.7 lub nowszego).

+0

+1 Wow! Nie wiedziałem, że coś takiego istnieje. Bardzo przydatny! – helpermethod

+7

+1 za wzmiankę o wycofaniu iteritems w 3.x –

10

Zgodnie z odpowiedzią Marks: W Pythonie 2 użyj iteritems(), w Pythonie 3 użyj items().

I dodatkowo; Jeśli potrzebujesz obsługi obu (i nie używaj 2to3) użyj:

counts = count_words(filename) 
for word in sorted(counts): 
    count = counts[word] 
Powiązane problemy