2017-05-15 2 views
0

Ich habe Textdateien in einem Verzeichnis mit Daten. Ich versuche, ein Diktat mit Schlüsseln zu füllen, die den Namen der Textdateien und die entsprechenden Elemente enthalten, die die Daten der Dateien enthalten. Ich möchte die Reihenfolge der Namen Schlüssel im Diktat die Reihenfolge der Erstellung der Testdateien im Repertorium widerspiegeln. Der Code, den ich verwenden ist:Dict-Schlüssel nach dem Erstellungsdatum der Dateien in Python bestellen

date_file_list = [] 
for filename in files: 
    stats = os.stat(filename) 
    lastmod_date = time.localtime(stats[8]) 
    date_file_tuple = lastmod_date, filename 
    date_file_list.append(date_file_tuple) 
date_file_list.sort() 
date_file_list_array = np.asarray(date_file_list) 
File2Array = {} 
for filename in date_file_list_array[0:20,1]: 
    print(filename) 
    File2Array.setdefault(filename,OpenandReadOO(filename)) 

OpenandReadOO ist eine Python-Funktion, die öffnen und die Datei mit dem Namen Dateinamen lesen und ein numpy Array füllen.

Leider, selbst wenn Liste date_file_list und date_file_list_array korrekt geordnet sind, wenn sie durchlaufen werden (scheinbar in der richtigen Reihenfolge), wird das resultierende dict immer nicht geordnet.

Wie soll ich fortfahren, um ein Diktat mit Elementen (und Daten) in der richtigen Reihenfolge zu erhalten?

Dank

Greg

+1

Sie nicht können. Pythons Wörterbuch ist in sich ungeordnet. Verwenden Sie stattdessen 'collections.OrderedDict' und werfen Sie einen Blick auf die erste Antwort dieser Frage: http://stackoverflow.com/questions/9001509/how-can-i-sort-a-dictionary-by-key – StefanS

Antwort

0

sollten Sie bestellt dict verwenden:

from collections import OrderedDict 

res = OrderedDict() 

for filename in date_file_list_array[0:20,1]: 
    print(filename) 
    res.__setitem__(filename,OpenandReadOO(filename)) 
+0

Es funktioniert perfekt Vielen Dank. – gregory

Verwandte Themen