J'ai deux listes de dictionnaires. La première liste contient les définitions de sphères en termes de x, y, z, rayon. La deuxième liste contient divers points dans l'espace comme x, y, z. Ces listes sont toutes deux très longues, donc itérer sur chaque liste et comparer avec toutes les valeurs est inefficace.Existe-t-il un moyen de comparer efficacement deux listes de dicts en python?
J'ai essayé la carte et réduire les délais, mais les deux d'entre eux prennent seulement 1 terme dans la fonction de filtrage. Ce que j'utilise est la suivante:
for curNode in nodeList:
for i in sphereList:
tmpRad = findRadius(i, curNode)
if float(tmpRad) <= float(i['radius']):
print "Remove node", curNode['num']
nodeRemovalList.append(curNode['num'])
break
où i
est la sphère actuelle (x, y, z, rad)
et curNode
est le nœud (num, x, y, z)
. Pour les grandes listes, cela devient très inefficace. Je voudrais filtrer les noeuds qui tombent dans le rayon de n'importe quelle sphère.
Le transtypage est là parce que je ne l'avais pas fait le transtypage sur la lecture initiale. J'obtenais les données d'un fichier txt afin qu'il soit analysé comme des chaînes. J'ai fait cette correction maintenant. Merci pour les conseils sur le code. – Shuo