2017-03-01 2 views
1

Ich verstehe nicht grundsätzlich, warum die Suche nach einem Schlüssel im Wörterbuch ist schneller als durch die Schlüssel eines Wörterbuchs, um einen passenden Schlüssel zu finden. Ich stelle mir vor, dass bei der Suche nach einem Schlüssel in Python mit etwas wie key in dict der Hintergrundcode durch die Schlüssel durchläuft, um nach Übereinstimmungen zu suchen. Warum sollte es also langsamer sein, das manuell mit etwas wie for i in dict: key == i zu tun?Warum Schlüssel Suche schneller als Iteration durch Python-Wörterbuch

+0

„Ich stelle mir vor, dass, wenn für einen Schlüssel in Python mit so etwas wie' Schlüssel in dict' Hintergrund Code sucht, wird durch Tasten werden Iterieren nach Übereinstimmungen suchen“- [Sie falsch vorstellen] (https://de.wikipedia.org/wiki/Hash_table). – user2357112

+0

[Sortieren und Suchen] (https://www.amazon.com/dp/0201896850). Mit der richtigen Wahl von Algorithmen und Datenstrukturen können Sie Dinge in log (n) oder weniger finden. – jww

+1

Siehe auch [hier] (http://stackoverflow.com/questions/513882/python-list-vs-dict-for-look-up-table) und viele andere Fragen darüber, wie Wörterbuch/Set-Lookups in Bezug auf implementiert werden Performance. – TigerhawkT3

Antwort

3

Da Wörterbücher in Python Hash-Tabellen realisiert. Denken Sie an etwas Ähnliches wie Indizes in einer relationalen Datenbank, die die Suche nach Schlüsseln beschleunigen.

Reference

3

Sie stellen sich das falsch vor: die Suche nach einem einzelnen Schlüssel verwendet eine Hash-Funktion, es handelt sich also um eine indirekte Referenz (zweistufige Berechnung) an den benötigten Speicherplatz. Denken Sie daran, als ein Array von Referenz Form

array[hash_function(key)] 
Verwandte Themen