Как объединить два ссылочных списка с Python

У меня есть глупые данные, поступающие из системы, они должны быть сведены.

Основной CSV имеет следующие столбцы: имя хоста, имя программы, имя версии

Однако для каждого хоста существует только одна строка, поэтому последние два поля выглядят так:

содержание имя_программы:

Word
Excel
Cognos
Mozilla

содержимое версии (не реально, только для иллюстрации):

2.3.2
121.3.0
build 22

Каков наилучший способ убедиться, что все совпадает, и сделать это более лаконично и питонически?

Вот как выглядит настоящий код, приведенный выше в основном для демонстрационных целей:

for row in tan_output.programs:
    names = row["Name"].splitlines()
    versions = row["Version"].splitlines()
    if(len(names) != len(versions)):
        print("NAME and VERSION from tan_programs are not equal... Exiting")
        exit()
    else:
        for name in names:
            #tan_programs.append({"Count": row["Count"], "Hostname": row["Hostname"], "Name": row["Name"], "Version": row["Version"]})

Я застрял внизу для цикла, потому что я чувствую, что должен циклировать по обоим спискам одновременно, а не по одному, а затем, что я собирался сделать, использовать счетчик для ссылки на второй и сформировать сглаженные данные.

PS, файл 7 гигабайт... так что чем эффективнее, тем лучше, например, если мне нужно использовать счетчик, я знаю из опыта, что i += 1 в 100 раз эффективнее, чем i = i + 1

1 ответ

Просто используйте Счетчик... если у кого-то нет лучшей идеи:

tan_programs = []
for row in tan_output.programs:
    names = row["Name"].splitlines()
    versions = row["Version"].splitlines()
    if(len(names) != len(versions)):
        print("NAME and VERSION from tan_programs are not equal... Exiting")
        exit()
    else:
        i = 0
        for name in names:
            tan_programs.append({"Hostname": row["Hostname"], "Name": name, "Version": versions[i]})
            i += 1

Это на самом деле очень быстро... медленная часть вставляет 8 миллионов записей в БД на другом сервере по сети.

Другие вопросы по тегам