看起来就像你想要的一样:def update(ip_dict, ip_address, site_path, user_agent):
if ip_address in ip_dict:
ip_entry = ip_dict[ip_address]
ip_entry['total_count'] += 1
if site_path in ip_entry['site_paths']:
ip_entry['site_paths'][site_path] += 1
else:
ip_entry['site_paths'][site_path] = 0
if user_agent in ip_entry['user_agents']:
ip_entry['user_agents'][user_agent] += 1
else:
ip_entry['user_agents'][user_agent] = 0
else:
ip_dict[ip_address] = {
'total_count': 1,
'site_paths': {site_path: 1},
'user_agent': {user_agent: 1}
}
# initialize the ip dict
ip_dict = {}
# read from your log file and for every entry, call
update(ip_dict, '1.2.3.4', site_path, user_agent)
当然,您可以通过使用defaultdict来优化这个问题,但这超出了这个问题的范围。在