2017-09-24 1 views
1

J'ai quelques dictionnaires python imbriqués. Je veux utiliser le dictionnaire pour organiser différents totaux que mon script compte. Je définissais le dictionnaire comme:Façon simple de définir des dictionnaires imbriqués?

periodDict = {'Group01':{'Bin01':{'Tally01':0, 'Tally02':0}, \ 
         'Bin02':{'Tally01':0, 'Tally02':0}}, \ 
       'Group02':{'Bin01':{'Tally01':0, 'Tally02':0}, \ 
         'Bin02':{'Tally01':0, 'Tally02':0}}} 

Mon problème est que dans le script réel, j'ai 52 périodes, 25 groupes et 12 bacs.

est-il un moyen plus simple de définir et initialiser le dictionnaire que pour construire un très grand dictionnaire dans le script? Et, apporter des modifications à la structure du dictionnaire est un cauchemar. Bien sûr, je voudrais faire quelque chose comme:

binDict = {'Tally01':0, 'Tally02':0} 
groupDict = {'Bin01':binDict, 'Bin02':binDict} 
periodDict = {'Group01':groupDict, 'Group02':groupDict} 

mais cela ne fonctionne pas parce que tout changement à un décompte Group01 modifiera également le décompte Group02 correspondant. Par exemple:

In [1]: binDict = {'Tally01':0, 'Tally02':0} #Initalize to 0 

In [2]: groupDict = {'Bin01':binDict, 'Bin02':binDict} 

In [3]: periodDict = {'Group01':groupDict, 'Group02':groupDict} 

In [4]: periodDict['Group01']['Bin01']['Tally01'] = 1 # Change one value 

In [5]: periodDict['Group01']['Bin01']['Tally01'] 
Out[5]: 1 

In [6]: periodDict['Group02']['Bin01']['Tally01'] # Group 2 also changed 
Out[6]: 1 

Que puis-je faire pour rendre ce problème plus simple et plus facile à gérer? Merci!

+0

Êtes-vous hardcoding les données pour les 52 périodes, 25 groupes et 12 bacs dans votre code (par opposition à la d'une autre source de données)? Le problème serait plus facile à résoudre si les dictionnaires imbriqués étaient créés par programmation. – martineau

Répondre

1

Au lieu d'utiliser des références aux dictionnaires, utilisez copy.deepcopy() pour en créer des copies complètes. De cette façon, la mise à jour de l'un n'affectera pas les autres:

from copy import deepcopy 

binDict = {'Tally01': 0, 'Tally02': 0} 
groupDict = {'Bin01': deepcopy(binDict), 'Bin02': deepcopy(binDict)} 
periodDict = {'Group01': deepcopy(groupDict), 'Group02': deepcopy(groupDict)} 
+1

Solution très simple et fonctionne exactement comme j'en ai besoin. Merci! – slalomchip

0

Il suffit d'utiliser des boucles afin que vous puissiez créer un programme, ne crée pas « à la main »:

>>> num_groups = range(1, 26) 
>>> num_bins = range(1, 13) 
>>> num_tally = range(1, 3) 
>>> period_dict = {} 
>>> for gn in num_groups: 
...  groupdict = {} 
...  period_dict[f"Group{gn:02}"] = groupdict 
...  for bn in num_bins: 
...   bindict = {} 
...   groupdict[f"Bin{bn:02d}"] = bindict 
...   for tn in num_tally: 
...    bindict[f"Tally{tn:02d}"] = 0 
... 

Et le résultat:

>>> from pprint import pprint 
>>> pprint(period_dict) 
{'Group01': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group02': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group03': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group04': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group05': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group06': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group07': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group08': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group09': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group10': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group11': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group12': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group13': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group14': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group15': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group16': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group17': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group18': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group19': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group20': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group21': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group22': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group23': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group24': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}, 
'Group25': {'Bin01': {'Tally01': 0, 'Tally02': 0}, 
      'Bin02': {'Tally01': 0, 'Tally02': 0}, 
      'Bin03': {'Tally01': 0, 'Tally02': 0}, 
      'Bin04': {'Tally01': 0, 'Tally02': 0}, 
      'Bin05': {'Tally01': 0, 'Tally02': 0}, 
      'Bin06': {'Tally01': 0, 'Tally02': 0}, 
      'Bin07': {'Tally01': 0, 'Tally02': 0}, 
      'Bin08': {'Tally01': 0, 'Tally02': 0}, 
      'Bin09': {'Tally01': 0, 'Tally02': 0}, 
      'Bin10': {'Tally01': 0, 'Tally02': 0}, 
      'Bin11': {'Tally01': 0, 'Tally02': 0}, 
      'Bin12': {'Tally01': 0, 'Tally02': 0}}} 

de cette façon, vous ne partagez pas dict s:

>>> period_dict['Group03']['Bin04']['Tally01'] = 99 
>>> period_dict['Group06']['Bin04']['Tally01'] 
0 
0

Si vous avez vraiment besoin d'initialiser le dictionnaire tout depuis le début, vous pouvez le faire comme ceci:

periodDict = {} 
groupnames = ['Group{:02d}'.format(nr+1) for nr in range(52)] 
binnames = ['Bin{:02d}'.format(nr+1) for nr in range(25)] 
tallynames = ['Tally{:02d}'.format(nr+1) for nr in range(12)] 

for groupname in groupnames: 
    periodDict[groupname] = {} 
    for binname in binnames: 
     periodDict[groupname][binname] = {} 
     for tallyname in tallynames: 
      periodDict[groupname][binname][tallyname] = 0