我是新來的perl,在大多數使用散列的地方給出了對python字典的引用。我注意到的一個區別是哈希不保存元素的順序。我想知道兩者之間是否存在一些更具體和根本性的差異。perl的散列和python的字典之間的區別
8
A
回答
17
最根本的區別是,如果訪問那些不存在的元素,perl散列不會拋出錯誤。
$ python -c 'd = {}; print d["a"]'
Traceback (most recent call last):
File "<string>", line 1, in <module>
KeyError: 'a'
$ perl -e '$d = {}; print $d->{a}'
$
Perl的哈希自動創建元素太不像蟒蛇
$ python -c 'd = dict(); d["a"]["b"]["c"]=1'
Traceback (most recent call last):
File "<string>", line 1, in <module>
KeyError: 'a'
$ perl -e '$d = {}; $d->{a}{b}{c}=1'
$
如果要轉換perl
到python
這些是主要的東西會抓住你了。
8
另一個主要區別是,在Python中,可以將(用戶定義的)對象作爲字典鍵。字典將使用對象'__hash__
和__eq__
方法來管理這個。
在Perl中,默認情況下不能使用對象作爲散列鍵。鍵被存儲爲字符串,並且如果您嘗試將它們用作鍵,則會將對象插入到字符串中。 (但是,可以通過使用與模塊(如Tie::RefHash)模塊相連的哈希來將對象用作關鍵字。)
相關問題
- 1. NodeJS和Python散列之間的區別
- 2. memcache和python字典之間的區別
- 3. 對象和散列之間的區別?
- 4. 加密和散列之間的區別
- 5. json字典與散列之間的區別
- 6. 地圖和字典之間的區別
- 7. 對象和字典之間的區別?
- 8. 散列中「字符」和「八位字節」之間的區別
- 9. 鍵控散列和非鍵控散列之間的區別?
- 10. 空散列和不散列之間的區別
- 11. 字典和python中的ordereddict之間的區別
- 12. Python的設置和字典之間的區別「內部」
- 13. R中的散列和列表之間的區別
- 14. HashMap與字典之間的區別ADT
- 15. 定義字典之間的區別
- 16. perl命令之間的區別'=>'和'='
- 17. 「(\ S +)\。」之間的區別和「(\ S +)|」在Perl
- 18. perl 5.8和5.10之間的區別
- 19. $ @和$之間的區別! in perl
- 20. Python中的散列字典
- 21. python中的[]和[,,]之間的區別
- 22. Python字典理解與循環之間的區別
- 23. CRC和散列方法之間的區別(MD5,SHA1)
- 24. Python中列表之間的區別
- 25. 列表和序列之間的區別
- 26. 在Python中的列表,序列和切片之間的區別?
- 27. android sha224和python之間的區別sha224
- 28. Python - os.access和os.path.exists之間的區別?
- 29. python:!=和<>之間的區別?
- 30. Python中cStringIO.StringIO.write和String.StringIO.write之間的區別
Python字典不保留元素的順序。 –
Python字典不保留元素的順序;它們被實現爲散列表。 – Philipp