Python - Как мне отсортировать это по координатам X, Y - PullRequest
0 голосов
/ 01 ноября 2019

Я хочу знать, как сортировать ниже по его координатам XY. приведенный ниже массив (координаты) дает мне вывод таким образом ...

  • 220x600 + 200 + 300
  • 200x300 + 400 + 500

Я хочу отсортировать по последним 2 цифрам: 200 + 300 - координаты X и Y, 400 + 500 - координаты X и Y

Я хочу, чтобы сортировка выполнялась таким образом ... сначала по Y, затем по X, аналогично [[0, 0], [1, 0], [2, 0], [0, 1], [1, 1], [2, 1], [0, 2], [1, 2], [2, 2]]

Пожалуйста, дайте мне знать, если это возможно. Ниже приведен фрагмент моего кода ... важно, чтобы я не модифицировал список массивов (координаты), просто отсортируйте его так, как я объяснил выше

coords = re.findall(r"(\d+[xX]\d+\+\d+\+\d+)", component_list, re.IGNORECASE)

for coord in coords[1:]:
    resolution = re.search(r"(\d+[xX]\d+)", coord, re.IGNORECASE)
    resolution = resolution.group(1)
    coord = re.search(r"(\d+\+\d+)", coord, re.IGNORECASE)
    coord = coord.group(1)

1 Ответ

0 голосов
/ 01 ноября 2019

я смог решить проблему сам ... на тот случай, если кому-то понадобится ответ на этот вопрос, вот что я использовал ... я создал приведенную ниже функцию и затем использовал эту функцию в sorted ()

        def sort_by_coord(x):
            coord = re.search(r"\+(\d+\+\d+)", x, re.IGNORECASE)
            coord_cut = "{}".format(coord.group(1)).split('+')
            return [coord_cut[1], coord_cut[0]]

        coords = re.findall(r"(\d+[xX]\d+\+\d+\+\d+)", component_list, re.IGNORECASE)
        coords = sorted(coords, key=sort_by_coord)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...