группировка элементов по размеру шага в списке / Resultset в python - PullRequest
0 голосов
/ 30 марта 2020

Я выполняю запрос Кассандры, чтобы получить набор результатов (именованная строка)

row = session.execute("SELECT distinct spacecraft_name FROM sensor.spacecraft_journey_catalog limit 10")

, который дает мне результаты, подобные приведенным ниже, типа "ResultSet"

Row(spacecraft_name='sts-9')
Row(spacecraft_name='datastax8')
Row(spacecraft_name='datastax3')
Row(spacecraft_name='soyuz8')
Row(spacecraft_name='datastax32')
Row(spacecraft_name='soyuz18')
Row(spacecraft_name='datastax16')
Row(spacecraft_name='sts-51-g')
Row(spacecraft_name='datastax47')
Row(spacecraft_name='sts-49')
Row(spacecraft_name='soyuztma-09m')
Row(spacecraft_name='sts-1')
Row(spacecraft_name='soyuztm-30')
Row(spacecraft_name='datastax39')
Row(spacecraft_name='sts-73')
Row(spacecraft_name='voskhod2')
Row(spacecraft_name='sts-59')
Row(spacecraft_name='soyuztm-33')
Row(spacecraft_name='datastax34')
Row(spacecraft_name='shenzhou10')
Row(spacecraft_name='soyuz27')
Row(spacecraft_name='sts-91')
Row(spacecraft_name='soyuz34')
Row(spacecraft_name='datastax14')
Row(spacecraft_name='sts-61-C')
Row(spacecraft_name='soyuz15')
Row(spacecraft_name='sts-74')
Row(spacecraft_name='soyuzt-8')

Я могу также запустите python список операций над ним, как

row[3:6]

, что дает мне

[Row(spacecraft_name='soyuz8'),
 Row(spacecraft_name='datastax32'),
 Row(spacecraft_name='soyuz18')]

Теперь у меня есть step_size list = [1,3,5]

Я хочу сгруппировать имена космических кораблей на основе итерации step_size по списку step_size

например, для первой итерации я хочу список типа lst = ['sts-9', 'datastax8', 'datastax3', 'soyuz8', ...]

для второй итерации, мне нужен список типа lst = ['sts-9, datastax8, datastax3', 'soyuz8, datastax32, soyuz18', 'datastax16, sts-51-g, datastax47', ...]

и для последней итерации мне нужен список вроде lst = ['sts-9, datastax8, datastax3, soyuz8, datastax32', 'soyuz18', 'datastax16, sts-51-g, datastax47, sts-49', ...]

Как мне этого добиться?


Я нашел решение, но я не могу не знаю, возможно ли это, если количество данных увеличивается

for name_step in name_steps_list:
        start, end = 0, name_step
        while end <= len(row.current_rows):
            print (start, end)
            name_groups = row[start:end]
            names = ",".join([name_group.spacecraft_name for name_group in name_groups])
            print("---------", names)
            start, end = end, end+name_step
        print("=============")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...