これは、Webスクレイピングプロジェクトで使用されるPythonクラス内のスニペットです。新たにスクレイピングされたデータのディクショナリを反復処理し、各レベルで以前にスクレイピングされたインデックスと比較し、後で処理するために別の深くネストされたdictに更新する必要がある値を追加したいと思います。これをクリーンアップし、同じ結果を達成するためにどのような戦略を使用できますか?
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