@molibdenius
Химик по образованию, осваиваю новую сферу знаний

Как переберая записи сложить их значения перед записью в базу данных?

Имеется база данных формата DBF: поле№1 поле№2 поле№3 поле№4 поле№5
_______________________________________ '22222'___'333'_____'39'______0.23____0.15
________________________________________'22222'___'333'_____'23'______0.52____0.32
________________________________________'22222'___'333'_____'10'______0.24____0.44

Поля №1 и №2 определяют объект, в поле №3 три вида значений, которым соответствуют значения в полях №4 и №5.
В базе могут присутствовать множество записей с одинаковыми полями №1 и №2, и от одной до трех записей с нужными записями.
Задача выбрать все записи с нужным полем №3, сложить значения полей №4 и №5 и записать в новую базу данных значения поля№1 и либо единственные значения полей №4 и №5, либо сумму значений(если подходящих записей 2 или3).

table = DBF(filename)
    for record in table: 
        if record[nu] == uch:  # проверяю поле номер №2
            if record[op][ :2] == galv or record[op][ :2] == term or record[op][ :2] == podg:   #проверяю поле №3
                if record[pz] in testlist:
                    time_pz = parser_vd(record, record[op][ :2], pz)
                elif record[sh] in testlist:
                    time_sh = parser_vd(record, record[op][ :2], sh)
                else:
                    time_pz = transform_time(record[pz])
                    time_sh = transform_time(record[sh])


Как дальше записи аккумулировать эти записи для дальнейшего фильтрации и сложения?
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Если имеется ввиду - «аккумулировать» то, что попадает в переменные time_pz и т.п. - можно складывать полученное либо в словарь, либо в список, в зависимости от того, какая конечная цель. Можно складывать в словарь (два ключа “time_pz” и “time_sh”) а под каждым ключом - список, в который добавляется следующее найденное значение.
Либо наеборот - добавлять в список словарики с парой ключей, значения - найденные (если один не найден, а второй найден - не найденный None).
Как-то так, например:
results = []
table = [i for i in range(1000)]
for record in table:
    double = None
    triple = None
    if not bool(record % 2):
        double = record
    if not bool(record % 3):
        triple = record
    if any([double, triple]):
        results.append({'double': double,'triple': triple})
print(results)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект