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
1
A
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.
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
- 1. Warum ist diese Methode der Iteration schneller?
- 2. array.forJeder läuft schneller als native Iteration? Wie?
- 3. Warum scheint PhoneGap schneller als Titanium?
- 4. Schneller als binäre Suche nach geordneter Liste
- 5. Warum int32_t schneller als int64_t?
- 6. AudioInputStream - Suche schneller
- 7. Warum sollte die Iteration über eine Liste schneller sein als die Indexierung?
- 8. Warum ist \% (\) schneller als \ (\) in Vim?
- 9. Warum PathPing ist schneller als Tracert?
- 10. Warum MySQL LIMIT Bedingung Suche mit Unterabfrage ist schneller als einfache Suche?
- 11. Warum ist HashMap schneller als HashSet?
- 12. Python Iteration durch stdout
- 13. Suche durch JSON-Array für passende Schlüssel
- 14. behafteten Komponenten durch Iteration
- 15. Warum ist float() schneller als int()?
- 16. Warum ist String.equals() schneller als sich selbst?
- 17. Machen Sie Listview Suche schneller
- 18. Django "durch" Modell Iteration
- 19. Warum ist Python schneller als Ruby?
- 20. Warum Neo4j ist schneller als SQL
- 21. Warum ist String.IsNullOrEmpty schneller als String.Length?
- 22. Warum ist MSMQ schneller als WCF QueueService?
- 23. Warum Join ist schneller als normale Verkettung
- 24. Warum liest ifstream :: viel schneller als Iteratoren?
- 25. Warum ist ScriptIntrinsicBlur schneller als meine Methode?
- 26. Warum map {} .compact ist schneller als each_with_object ([])?
- 27. Warum ist string.IsNullOrEmpty schneller als ein Vergleich?
- 28. Warum ist Core Data schneller als SQLite
- 29. Warum ist np.where schneller als pd.apply
- 30. Warum ist ToUpperInvariant() schneller als ToLowerInvariant()?
„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
[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
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