Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
872 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  aide exploitation table de donnees

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

aide exploitation table de donnees

n°2224492
eryalk9
Posté le 08-04-2014 à 17:48:18  profilanswer
 

Bonjour, je suis débutante en programmation et on nous a demandé de traiter un fichier texte de type:
A1 B1 0.2
A2 B3 0.6
A3 B3 0.0
A3 B5 0.1
A1 B2 0.5  
A5 B4 0.9
A6 B8 0.1
A7 B1 0.0
A2 B4 0.0
 
Le but est de rendre une liste ou un dictionnaire qui donnera les couples A-B lorsqu'à la fois A et B sont unique, ainsi que, lorsque A ou B est doublé, sélectionne le couple pour lequel on a la plus petite valeur.  
J'ai réussi à selectionner les couples lorsque A est unique ou appartient au plus faible, mais je ne sais pas comment m'y prendre pour selectionner les B ensuite. D'autant que je suis sûre que j'ai plein de données inutiles dans mon programme. Pour l'instant, ça ressemble à ça:
 
# fonction de comparaison
def ortho (m):
 ort1 = {}
 ortb = {}
 ortho = {}
 test = []
 testb = []
 c=0
 x=0
 y=0
 lb2=0
 lb1=0
 lignes=len(m)
 colonnes=len(m[0])
 #on parcourt la liste des gènes A  
 for lignes in range(0, len(m)):
  A=m[lignes][0]
  c=c+1
  if c<(len(m)):
   if A in test:
    y=lignes
    if x != y:
     if m[x][2]<m[y][2]:
      ort1[m[x][0]] = lignes
     else:
      ort1[m[y][0]] = lignes
    #print 'test A dans test'
    #print lignes
   else:
    test.append(A)
    ort1[m[x][0]] = lignes
    x=lignes
    #print 'enregistrer A'
    #print lignes
  #print A
  #print lignes
  #parmis les genes selectionnes on verifie les B uniques:
 for values in ort1.values():
  B=m[values][1]
  if B in testb:
   lb2=lignes
   #comparaison des evalues des deux associations de B:
   if m[lb1][2]<m[lb2][2]:
    ortho[m[lb1][0]]=m[lb1][1]
   else:
    ortho[m[lb2][0]]=m[lb2][1]
  else:
   testb.append(B)
   ortb[m[lb1][0]]=m[lb1][1]
  ortb[m[values][0]]= m[values][1]
 return (ort1, ortb, ortho)
m = lire('tab')
print ortho(m)
 
 
normalement (j'ai traitée les données à la main), si le programme était correct, je devrais obtenir dans ortho les couples (A3-B3, A6-B8, A7-B1 et A2-B4), mais je n'obtient que le dernier, A2-B4.  
Donc, si quelqu'un avait une idée d'où j'ai fais des erreurs et saurait ce qui est complètement inutile... je serais très reconnaissante. Merci d'avance!


Message édité par eryalk9 le 08-04-2014 à 18:07:26
mood
Publicité
Posté le 08-04-2014 à 17:48:18  profilanswer
 

n°2224502
fred1599
Posté le 08-04-2014 à 20:10:35  profilanswer
 

Oui en effet, je pense que les dictionnaires sont une bonne solution, surtout pour un affichage plus facilement gérable.
 
Voilà une solution:
 

Code :
  1. def getKeyText(f):
  2.     result = {}
  3.     for line in f:
  4.         a, b, key = line.split()
  5.         if key not in result:
  6.             result[key] = [(a, b)]
  7.         else:
  8.             result[key].append((a, b))
  9.     return result
  10. def displayResult(myResult):
  11.     keys = sorted([key for key in myResult])
  12.     for k in keys:
  13.         print(k)
  14.         for res in myResult[k]:
  15.             a, b = res
  16.             print('\t{a} {b}'.format(a=a, b=b))
  17. with open('test.txt', 'r') as f:
  18.     r = getKeyText(f)
  19.     displayResult(r)


 
Le rendu est sympa
 
fred1599@fred1599-Aspire-5741G:~$ python3 test.py
0.0
 A3 B3
 A7 B1
 A2 B4
0.1
 A3 B5
 A6 B8
0.2
 A1 B1
0.5
 A1 B2
0.6
 A2 B3
0.9
 A5 B4


Message édité par fred1599 le 08-04-2014 à 20:12:01

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  aide exploitation table de donnees

 

Sujets relatifs
Prévision demande Besoin d'aide VBA EXCELdemande de l'aide
Aide projet JavaBesoin d'aide pour VBA
besoin d'aide pour une programmation ARDUINOcomment extraire des données spécifique du fichier log
Besoin d'aide, client serveurRequête SQL basée sur paramètre et table un peu étrange
Aide formulaire d'inscription PHP page blancheBesoin d'aide su javascool (génération aléatoire d'image)
Plus de sujets relatifs à : aide exploitation table de donnees


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR