2024-04-19 09:52:39 发布
网友
我是perl新手,在大多数使用hash的地方,都提供了对python字典的引用。我注意到的一个不同之处是散列不能保持元素的顺序。我想知道这两者之间是否有更具体和根本的区别。
最基本的区别是,如果访问不存在的元素,perl哈希不会抛出错误。
$ python -c 'd = {}; print("Truthy" if d["a"] else "Falsy")' Traceback (most recent call last): File "<string>", line 1, in <module> KeyError: 'a' $ perl -we 'use strict; my $d = {}; print $d->{"a"} ? "Truthy\n": "Falsy\n"' Falsy $
Perl哈希自动创建元素也不像python
$ python -c 'd = dict(); d["a"]["b"]["c"]=1' Traceback (most recent call last): File "<string>", line 1, in <module> KeyError: 'a' $ perl -we 'use strict; my $d = {}; $d->{a}{b}{c}=1' $
如果你要把perl转换成python的话,这些就是你要做的主要事情。
perl
python
另一个主要区别是在Python中,可以将(用户定义的)对象作为字典键。字典将使用对象__hash__和__eq__方法来管理此操作。
__hash__
__eq__
在Perl中,默认情况下不能将对象用作哈希键。键存储为字符串,如果尝试将对象用作键,则对象将被插值为字符串。(但是,通过使用绑定哈希和Tie::RefHash等模块,可以将对象用作键。)
最基本的区别是,如果访问不存在的元素,perl哈希不会抛出错误。
Perl哈希自动创建元素也不像python
如果你要把
perl
转换成python
的话,这些就是你要做的主要事情。另一个主要区别是在Python中,可以将(用户定义的)对象作为字典键。字典将使用对象
__hash__
和__eq__
方法来管理此操作。在Perl中,默认情况下不能将对象用作哈希键。键存储为字符串,如果尝试将对象用作键,则对象将被插值为字符串。(但是,通过使用绑定哈希和Tie::RefHash等模块,可以将对象用作键。)
相关问题 更多 >
编程相关推荐