2015-04-09 1 views
0

j'ai 3 dictionnaires: queries_dict, actions_dict, results_dict, 800k, 700K et 7M touches respectivement. Pour trouver les actions liées à quel résultat, je dois utiliser queries_dict. Je voudrais optimiser les boucles imbriquées suivantes:boucles imbriquées sur Optimisation des dictionnaires

for q_id, q in queries_dict.iteritems(): 
    for ac_id, ac in ((ac_id, ac) for (ac_id, ac) in actions_dict.iteritems() if ac.query_id == q.query_id and q.session_id == ac.session_id): 
     for r in q.results: 
      if r.rank_of_result == ac.rank_of_result: 
       results_dict[r.result_id].actions.append(ac) 

Répondre

0

Vous pouvez utiliser Dictionary view objects comme viewitems() ce fil comme sets et sous forme d'ensembles a O (1) pour le contrôle des membres (mais il est possible que lorsque vos valeurs. hashable !!)

Si toutes les valeurs sont négociables, de sorte que les paires (clé, valeur) sont uniques et sont réductibles, la vue des articles est également configurée comme un ensemble.