Die folgenden Beispielcodes abrufen alle laufenden Prozesse und drucken sie. Sie wurden nach dem 3. Beispiel here und dem letzten von here geschrieben. Problem ist, ich kann nicht herausfinden, warum nur der erste Prozess sortiert wie gewünscht abruft.Python Lambda-Funktion zum Sortieren der Liste nach Wörterbuch
Ich denke, es ist mit der lambda
Funktion Konstruktion verwandt. Aber das richtig laufende Sample, das erste, scheint die lokale Variable der for-Anweisung mit dem p.dict
Dictionary zu mischen, so dass ich stecken bleiben kann.
Erstes Beispiel:
import psutil
procs = []
for p in psutil.process_iter():
try:
p.dict = p.as_dict(['pid', 'name'])
except psutil.NoSuchProcess:
pass
else:
procs.append(p)
processes = sorted(procs, key=lambda p: p.dict['name'], reverse=False)
print(processes)
Die zweite Probe:
import psutil
procs = []
for proc in psutil.process_iter():
try:
procs_dic = proc.as_dict(['pid', 'name'])
except psutil.NoSuchProcess:
pass
else:
procs.append(proc)
processes = sorted(procs, key=lambda ordem: procs_dic['name'], reverse=False)
print(processes)
Eigentlich habe ich die vorletzte Zeile geändert 'Prozesse = sortiert (Procs, key = Lambda ordem: ordem.dict [ 'name'], Reverse = False)', folgende @JordanMcQueen Spitze. Allerdings konnte ich die Aufgabe nur ausführen, nachdem ich 'proc.dict = proc.as_dict (['pid', 'name'])' die Zeile nach 'try' geändert hatte. –
Rechts. Nachdem Sie das getan haben, haben Sie genau den gleichen Code wie im ersten Snippet * außer *, dass Sie eine der Variablen namens 'p' in' proc' und die andere in 'ordem' umbenannt haben. –