Schleife durch die Liste der Wörterbücher

habe ich eine Liste von Wörterbüchern. es gibt mehrere Punkte in der Liste, einige sind mehrere. Wenn es mehrere Eintrag möchte ich den Durchschnitt berechnen der x-und der y, die mit diesem Punkt. Mein problem ist, dass ich nicht weiß, wie eine Schleife durch die Liste der Wörterbücher zu vergleichen, die ids der Punkte!

wenn ich so etwas wie, dass:

for i in list:
  for j in list:
    if i['id'] == j['id']:
      point = getPoint(i['geom'])
      ....

sorry, die Formatierung ist ein bisschen tricky... die zweite Schleife innerhalb der ersten...
ich denke, es vergleicht den ersten Eintrag der Liste, also ist es das gleiche... also muss ich erst in der zweiten Schleife mit dem zweiten Eintrag, aber ich kann das nicht mit i-1, weil ich das Loch Wörterbuch...
Jemand eine Idee?
vielen Dank im Voraus!

 for j in range(1, len(NEWPoint)):
      if i['gid']==j['gid']:
         allsamePoints.append(j)
      for k in allsamePoints:
         for l in range(1, len(allsamePoints)):
            if k['gid']==l['gid']:
                Point1 = k['geom']
                Point2=l['geom']
                X=(Point1.x()+Point2.x())/2
                Y=(Point1.y()+Point2.y())/2
                AVPoint = QgsPoint(X, Y)
                NEWReturnList.append({'gid': j['gid'], 'geom': AVPoint})
                del l
      for m in NEWReturnList:
          for n in range(1, len(NEWReturnList)):
              if m['gid']==n['gid']:
                 Point1 = m['geom']
                 Point2=n['geom']
                 X=(Point1.x()+Point2.x())/2
                 Y=(Point1.y()+Point2.y())/2
                 AVPoint = QgsPoint(X, Y)
                 NEWReturnList.append({'gid': j['gid'], 'geom': AVPoint})
                 del n
              else:
                 pass

ok, denke ich... im moment ist das eher verwirrend :)...

  • Welche Sprache verwenden Sie?
  • ich bin mit python
  • Was soll passieren, wenn drei oder mehr Elemente haben den gleichen 'id'? Möchten Sie berechnen den Durchschnitt von jedem paar von Elementen? Oder möchten Sie die cluster alle Elemente mit der gleichen 'id' und nehmen den Durchschnitt der cluster?
  • Noch nicht klar. Sie geben Beispiel für die Eingabe und erwartete Ausgabe?
  • Warum nehmen Sie die i-1? Sie noch eine Schleife durch alle möglichen übereinstimmungen.
  • ok, die Eingabe sind die Punkte mit den ids. Sie werden auf verschiedene Arten ermittelt, so gibt es mehrere Einträge. Das Ergebnis sollte sein, dass ich einen Punkt in einer Liste, die das Ergebnis der Durchschnittsberechnung. ich habe nicht eine gute Lösung für die, die im moment... ich wird kopieren Sie einige code, einen moment... aber: es sieht sehr verwirrend im moment!
  • Bitte verwenden Sie nicht list wie ein Variablenname.
  • Es ist auch hilfreich, nach einem Beispiel, wie Ihre Daten Aussehen, sowie ein Beispiel, was Sie aus ihm werden soll. Viele Male haben wir gehen auf der Suche für die richtige Antwort auf die falsche Frage. Das beste, was zu tun ist, sagen, "Dies ist, was ich habe... Das ist was ich will... Das ist, was ich Tue...". Es dauert ein bisschen länger zu schreiben, aber es zwingt Sie zum nachdenken über Ihren Algorithmus, und es bietet uns viel mehr Flexibilität in, wie wir die Antwort.

InformationsquelleAutor aleho | 2010-08-11
Schreibe einen Kommentar