如何在字典的字典中模拟Perl的自动活化行为?
谷歌和网上的文档对我的问题都没有提供太多帮助,所以我想在这里问问大家。
在Perl语言中,你可以很简单地设置一个多层嵌套的哈希(类似于字典),然后像这样测试最后的键:
my $hash = {};
$hash{"element1"}{"sub1"}{"subsub1"} = "value1";
if (exists($hash{"element1"}{"sub1"}{"subsub1"})) {
print "found value\n";
}
那么在Python中,怎么做才算是“最佳实践”呢?
4 个回答
2
from collections import defaultdict
tree = lambda: defaultdict(tree)
t = tree()
t[1][2][3] = 4
t[1][3][3] = 5
t[1][2]['test'] = 6
5
关于这个在Python中是否是最佳实践,大家还有不同的看法:
hash = {}
hash['element1', 'sub1', 'subsub1'] = 'value'
if ('element1', 'sub1', 'subsub1') in hash:
print "found value"
不过,这种方法确实有效,而且看起来很简洁,如果适合你用的话。
主要的问题是,你无法进行中间访问。你 不能 这样做:
if ('element1', 'sub1') in hash:
print "found value"
17
最接近的类似东西可能就是下面这个:
import collections
def hasher():
return collections.defaultdict(hasher)
hash = hasher()
hash['element1']['sub1']['subsub1'] = 'value1'
if 'subsub1' in hash['element1']['sub1']:
print 'found value'