Хорошо, прежде чем я спрашиваю, я уже видел следующие ответы:
Python OrderedDict не поддерживает порядок элементов
Преобразование диктов в OrderedDict
OrderedDict не сохраняет порядок
но я все еще не могу сделать это правильно.
Справочная информация: у меня есть файл Groundtruth, например, jp1_GT.txt (есть и другие файлы, по разным путям, но в настоящее время я имею дело только с одним файлом) по некоторому пути. В этом файле каждая строка представляет один ограничивающий прямоугольник в формате. Я изменяю некоторые вычисления и собираюсь записать их в новый основной файл.
#Path containing old folders
src_path = r"C:\Users\username\Downloads\LITIV_dataset"
#dictionary creation
newgtdict ={}
for folderName in os.listdir(src_path):
folderPath = src_path + "\\" + folderName
if not os.path.isdir(folderPath):
continue
listOfFilePaths = glob.glob(folderPath + "\\"+ folderName +"_GT.txt")
for filePath in listOfFilePaths:
openedFile = open(filePath, 'r')
lines = openedFile.readlines()
linecount =0
for line in lines:
linecount+=1
linenumber = str(linecount)
my_list = str(line).split(",")
bboxes=[]
#checking for non-empty lines
if len(my_list)>0:
x_br = int(my_list[2])
y_br = int(my_list[3])
x_tl = int(my_list[0]) - (x_br/2)
y_tl = int(my_list[1]) - (y_br/2)
box = [x_tl,y_tl,x_br,y_br]
newgtdict[str(filePath)+str(linenumber)] = box
print newgtdict
Первые четыре строки моего jp1_GT.txt выглядят так:
189,163,72,72
190,162,72,72
188,160,72,72
189,163,72,72
Однако первые четыре строки вывода выглядят так:
{'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt1': [153, 127, 72, 72]}
{'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt1': [153, 127, 72, 72], 'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt2': [154, 126, 72, 72]}
{'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt1': [153, 127, 72, 72], 'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt3': [152, 124, 72, 72], 'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt2': [154, 126, 72, 72]}
{'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt4': [153, 127, 72, 72], 'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt1': [153, 127, 72, 72], 'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt3': [152, 124, 72, 72], 'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt2': [154, 126, 72, 72]}
Ожидаемые первые 4 строки вывода:
{'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt1': [153, 127, 72, 72]}
{'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt2': [154, 126, 72, 72]}
{'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt3': [152, 124, 72, 72]}
{'C:\\Users\\username\\Downloads\\LITIV_dataset\\jp1\\jp1_GT.txt4': [153, 127, 72, 72]}
Просто побочный вопрос: вы предлагаете какой-нибудь другой лучший способ для этого.