我是 python 新手,无法理解 dict 哈希。
这是我的 perl 代码:
my %sites;
foreach (@indexes) {
push @{$sites{$1}}, $_ if (/.*\.(.*)/);
}
foreach my $sites (keys %sites)
{
@devices = @{$sites{$sites}};
#Do stuff
我如何在 Python 中做同样的事情?
这是一个非常直接的翻译:
import re
re_domain = re.compile(".*\.(.*)")
sites = {}
for index in indexes:
match = re_domain.search(index)
if match:
sites.setdefault(match.group(1), []).append(index)
for site_key in sites.keys():
devices = sites[site_key]
一种更 Pythonic 的方式是这样做:
import collections
import os.path
sites = collections.defaultdict(list)
for index in indexes:
root, ext = os.path.splitext(index)
sites[ext].append(index)
for site_key, devices in sites.iteritems():
...