j'ai un ensemble de données avec les numéros suivants:Python, trouver une ligne spécifique basée sur plusieurs coniditions dans une ligne
1 30.0 13.4545
2 30.0 10.5578
3 30.0 12.5578
4 5.0 5.224
Je le code suivant qui imprime la ligne avec le flotteur le plus petit sur la base deuxième flotteur.
with open(fn) as f:
print min(f, key=lambda line: float(line.split()[1]))
J'essaie de comprendre comment imprimer la ligne avec le plus grand premier flotteur, mais si les flotteurs sont les mêmes, puis imprimer la ligne avec le plus petit 3 flottant au sein du groupe de lignes avec le 1er flotteurs
il devrait imprimer:
2 30.0 10.5578
Je pensais que quelque chose comme ceci:
with open(fn) as f:
cpu = max(f, key=lambda line: float(line.split()[1]))
for line in f:
if cpu in line > 1:
print min(f, cpu, key=lambda line: float(line.split()[1]))
mais pas de chance, je continue d'imprimer soit le nombre max ou min sans regarder les deux conditions.
Étant donné que votre condition dépend des valeurs de plusieurs lignes que vous êtes soit allez avoir à lire le fichier en mémoire pour le lire plusieurs fois.Le code que vous avez ne fonctionne pas parce que l'appel 'max()' lit le fichier entier, il n'y a plus rien à consommer dans la boucle 'for' suivante. – martineau