如果我們創建一個空字典,如:idict = {}
,那麼爲這本字典分配了多少空間?我知道這個列表,如果我們初始化一個像ilist = []
這樣的列表,它將總是過度分配大小,第一個是4個空格,然後是8.
字典怎麼樣?python中爲空字典分配了多少空間?
回答
好吧,字典不會在其中存儲實際的字符串,它的工作原理有點像C/C++指針,所以你只會在字典中爲每個元素獲得一個常量開銷。
測試針對
import sys
x = {}
sys.getsizeof(x)
本身由許多輪葉的字典,每個包含:
當前存儲的對象的哈希碼(即未從位置預測的 由於使用了衝突解決方案 策略)
a poi向關鍵對象提供指向值的指針
對象總共在32位上至少有12個字節,在64位上有24個字節。
字典開始時用8個空水桶,通過加倍的條目的數量被調整大小達到其容量時(目前(2N + 1)/ 3)。
*「字典從8個空桶開始,每當容量達到時將條目數翻倍。」*排序。事實上,當它們大約2/3滿時,它們會以計算量增長。在這裏你可以看到完整的解釋https://hg.python.org/cpython/file/tip/Objects/dictobject.c#l258 – Sam
要..如果你曾經使用C++
then..If你看到Python解釋器的源代碼是誠實的,它實際上就像在C++
associative map
,你會看到它使用你的堆內存部分將數據存儲在兩個鍵入&使用指針將一個數據指向其他完全像map
的作品在C++
。在我的系統中它是280 ..現在@Navneet說你可以使用sys.getsizeof來計算大小。但請記住,它是系統特定的&因此,您的系統可能不會給你280bytes。理解如果它是280字節,則意味着它使用幾個相關指針的微妙線程來存儲指向數據結構的點
- 1. 將爲Java LinkedList分配多少空間?
- 2. 在SQLite中爲String分配了多少空間?
- 3. 爲以下代碼分配了多少空間?
- 4. 堆棧上分配多少空間
- 5. 如何在Python中將字符串值分配爲空字典?
- 6. 爲日誌/數據分配多少空間太多? (SQL Server 2008)
- 7. 數據庫內存:: MySql Innodb爲空字段vs非空字段分配多少存儲空間 - varchar或text
- 8. views - 多少空間?
- 9. MySQL字段空間分配
- 10. Java - 分配的空間不減少
- 11. 爲數組分配空間
- 12. 要在mpz_t(MPIR)中分配多少空間?
- 13. MySQL:NULL字段使用多少空間?
- 14. LinearLayout空間分配
- 15. 我如何分配更多的空間爲數字
- 16. 如何查找調用malloc()分配多少空間?
- 17. Python中的分隔空間
- 18. 轉換空間分隔的樹有用的字典在python
- 19. SVN需要多少空間?
- 20. LLVM蹦牀多少空間
- 21. 使元素不佔用比分配空間更多的空間
- 22. 命名空間字典?
- 23. SQL Server 2000,表分配太多空間
- 24. 爲字典鍵分配函數 - Python
- 25. 如何匹配Javascript中的空字典?
- 26. 的Python:在空間分割,除了某些字符
- 27. 如何查看我在MySql中使用了多少空間?
- 28. 需要弄清楚FileTable在空間中使用了多少
- 29. 如何在模塊之間分配多個python字典
- 30. 爲什麼Python2.7字典使用比Python3字典更多的空間?
http://stackoverflow.com/questions/327311/how-are-pythons-built-in -dictionaries-implemented – kgwong
如果我們想檢查ASCII字符的副本,用256分配列表大小便宜還是分配字典便宜? – umassjin
要檢查重複項,一組似乎更合適,因爲檢查成員資格是一組典型的基本操作。 –