Ich möchte Python intertools groupby verwenden, um eine Funktion zu erstellen, die kleine Listen zu einer größeren Liste zusammenfasst. Was fange ich mit ist eine Liste der verschiedenen Datenpunkte mit der folgenden Struktur (genannt sortedData)Verwenden von itertools groupby zum Sortieren von Listen und Zusammenführen von Wörterbüchern
[
[location, date, {item:quantity}],
[location2, date, {item2:quantity2}],
...
]
ich sie zu einer Gruppe versuchen, so dass jeder Ort/Datum Kombination ein Wörterbuch mit allen Elementen und Mengen hat, und dass diese Listen sind nach dem Standort gruppiert. Hier ein Beispiel:
[
[
[Maine, 01062016, {apple:5, orange:2}],
[Maine, 02042016,{apple:3, peach:2}]
],
[
[Vermont, 01032016, {peach:3}]
]
]
Was ich habe, so weit ist dieser Code, aber ich habe Probleme zu verstehen, wie die Gruppe zu verwenden, die erstellt wird, da es kein iterable Artikel ist. Jetzt gibt es eine leere Liste, obwohl es so scheint es Dinge anhängen sollte
def compileData(sortedData):
from itertools import groupby
for key, locationGroup in groupby(sortedData, lambda x: x[0]):
locationList=[]
bigList=[]
for date in locationGroup:
locationList.append(date)
locationList.append(locationGroup)
for key, bigList in groupby(locationGroup, lambda x: x[1]):
datePlace=[key[0],key[1],{}]
for date in locationGroup:
datePlace[2]=dict(list(date[2].items())+list(datePlace[2].items()))
bigList.append(datePlace)
return bigList
Lassen Sie mich wissen, was Sie denken, und wenn Sie eine bessere Idee zu haben, wie dieses Problem zu lösen, lassen Sie es mich wissen. Ich habe es rekursiv geschrieben, aber die Datei, auf der ich es verwende, ist zu lang, also ist es zu langsam.
Könnten Sie ein Beispiel hinzufügen, bitte Art der Ausgabe für Sie hoffen? – miradulo
"Verwenden von itertools groupby zum Sortieren" - "iertools.groupby" sortiert nicht. Wenn Sie Dinge sortieren müssen, hilft 'itertools.groupby' Ihnen nicht dabei. Es kann hilfreich sein, um sortierte Daten zu verarbeiten, aber etwas anderes muss sicherstellen, dass die Daten sortiert sind. – user2357112
Hallo Mitch, der zweite Block Zitat hat die Ausgabe, die ich suche. (dh eine Liste von Listen von Listen) –