这是网络抓取项目中使用的 python 类内部的一个片段。我想遍历一个新抓取的数据字典,将其与每个级别的先前抓取的索引进行比较,并将需要更新的值添加到另一个深度嵌套的字典以供以后处理。我可以使用什么策略来清理它并仍然获得相同的结果?
self.new_stats[tour] = {}
parsed_stats = parse_stat_year(CURRENT_STAT_YEAR, self.scraped_stats_index[tour])
for pname, stats_by_year in parsed_stats.items():
if pname in self.raw_players_with_stats[tour]:
player = self.raw_players_with_stats[tour][pname]
if 'stats' in player:
for y, stats_by_cat in stats_by_year.items():
if str(y) in player['stats']:
for cat, stat in stats_by_cat.items():
if cat in player['stats'][str(y)]:
for prop, val in stat.items():
if (not prop in player['stats'][str(y)][cat]) or (player['stats'][str(y)][cat][prop] != val):
self.new_stats[tour].setdefault(pname,{}).setdefault(y,{}).setdefault(cat,{})[prop] = val
else:
self.new_stats[tour].setdefault(pname,{}).setdefault(y,{})[cat] = stat
else:
self.new_stats[tour].setdefault(pname,{})[y] = stats_by_cat
else:
self.new_stats[tour][pname] = stats_by_year
elif pname in self.new_player_urls[tour]:
self.new_stats[tour][pname] = stats_by_year