Предположим, у меня есть список / кортеж, подобный этому:
MyLocation = 'DE'
(
('Pencils', 'Artists Pencils', 18.95, 'PVT', 'DE'),
('Pencils', '', 19.95, 'PVT', 'IT'),
('Pencils', '', 23.50, 'PRF1', 'US'),
('Pencils', 'Wooden Pencils', 23.50, 'PRF2', 'DE'),
('Pencils', '', 12.50, 'NON', 'DE'))
Я хочу отсортировать его в два прохода по следующим правилам:
1) Кортежи, соответствующие строке MyLocation 'DE'
в элементе [4]
, сверху
Это промежуточный шаг, относительный порядок между DE
s не имеет значения.Просто, чтобы все DE
были наверху.
(
('Pencils', '', 12.50, 'NON', 'DE'),
('Pencils', 'Wooden Pencils', 23.50, 'PRF2', 'DE'),
('Pencils', 'Artists Pencils', 18.95, 'PVT', 'DE'),
('Pencils', '', 23.50, 'PRF1', 'US'),
('Pencils', '', 19.95, 'PVT', 'IT')
)
2) После этого сортируйте по элементу [3]
rd, предпочтительный порядок должен быть ['PRF1', 'PRF2', 'PRF3']
.Другие строки можно оставить в нижних позициях.
Мой ожидаемый окончательный отсортированный результат -
(
('Pencils', '', 23.50, 'PRF1', 'US'),
('Pencils', 'Wooden Pencils', 23.50, 'PRF2', 'DE'),
('Pencils', 'Artists Pencils', 18.95, 'PVT', 'DE'),
('Pencils', '', 12.50, 'NON', 'DE'),
('Pencils', '', 19.95, 'PVT', 'IT')
)
Как бы я поступил с этими двумя видами сортировки?Я могу управлять первой сортировкой с помощью del и insert, но каков рекомендуемый способ?
tempList = actualList
i = 0
for record in actualList:
if record[5] == 'DE':
del tempList[i]
tempList.insert(0, record)
i = i + 1
actualList = tempList
Меня особенно смущает, как мне поступить со второй сортировкой.Пожалуйста, предоставьте образцы кода для второй сортировки.