Je veux comparer si la valeur d'une liste existe dans la valeur de l'autre liste.Ils sont énormes (50k + articles, de la base de données).Comparer la valeur d'une liste dans la liste Gigantic Two Dimen en python, le plus rapide?
EDIT:
Je veux aussi marquer l'enregistrement qui est reproduit en double = True et les garder dans la table pour refrence plus tard.
ici comment les listes sont:
n_emails=[db_id,checksum for id,checksum in search_results]
#I want to compare checksum if exist inside same list or other list and retrieve id (db_id , if exist)
#example : n_emails= [[1,'CAFEBABE010'],[2,'bfeafe3df1ds],[3,'deadbeef101'],[5,'CAFEBABE010']]
#in this case i want to retrive id 1 and 5 coz they are same checksum
for m in n_emails:
dups=_getdups(n_emails,m[1],m[0])
n_dups=[casesdb.duplicates.insert(**dup) for dup in dups]
if n_dups:
print "Dupe Found"
casesdb(casesdb.email_data.id == m[0]).update(duplicated=True)
def _getdups(old_lst,em_md5,em_id):
dups=[]
for old in old_lst:
if em_md5==old[0] and old[1]!=em_id:
dups.append(dict(org_id=old[1],md5hash=old[0],dupID=em_id,))
return dups
Mais il semble trop long et plus grande liste (50k vs records 50k +) Il a couru pendant plus de 5000 secondes, jamais fait, ne semble jamais boucle sans fin? Le serveur que j'utilise possède 4 Go de RAM et 4 cœurs. De toute évidence, je fais quelque chose de mal.
S'il vous plaît aider .. merci beaucoup!
SOLVED:
Dict Index Mapping est une façon beaucoup plus rapide! (Lorsque la table mysql n'est pas indexée, veuillez noter que je n'ai pas testé la table indexée).
Ses 20 secondes contre 30 milisecondes = 20 * 1000/30 = 666 fois! LOL
Y a-t-il des raisons pour lesquelles vous voudriez faire ceci dans le code au lieu de passer par une requête de base de données? –
Vous voulez supprimer les doublons? Parce qu'il devrait y avoir des moyens plus efficaces si vous posez vos dernières demandes. – Kabie
Ce que je veux faire est d'obtenir des entrées dupliquées, et construire une table en les tenant, qui sera refrusted plus tard. Disons que lorsque l'utilisateur parcourt un enregistrement, il/elle sera montré avec une liste d'entrées dupliquées afin qu'il/elle puisse également les vérifier (ou les ignorer). Mysql's va éliminer les doublons, n'est-ce pas? –