Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134

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

08.11.2019, 11:52. Показов 2731. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, помогите написать скрипт.

Есть кортеж который получаем из базы Оракл, есть пары:
stand setting_code
StandA val1
StandB val2

Эти пары не всегда совпадают, пример во вложенном файле.

stand setting_code
StandA val1
StandB val2
StandA(нужно добавить) None (нужно добавить)
StanB val3
StandA val4
StandB(нужно добавить) None (нужно добавить)

Хочу добавить, строку и в зависимости от стенда которого нет пары дописывать название стенда и остальные пустые поля добавлять None.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
print("Content-type: text/html\n")
import cx_Oracle
conn = cx_Oracle.connect("логин, пасс")
curs = conn.cursor()
curs.execute("select filename as stand,setting_code,setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID from WFCFG_2 where loadid like '%20191019%' UNION all select filename  as stand,setting_code,setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID  from WFCFG_1 where loadid like '%20191019%' order by setting_code")
result = curs.fetchall()
print("<table border='1' align='center'>")
print ("<tn><th style='color:red'>stand</th><th style='color:red'>setting_code</th><th style='color:red'>setting_kind_code</th><th style='color:red'>created_by</th><th style='color:red'>date_from</th><th style='color:red'>bool_value</th><th style='color:red'>is_default</th><th style='color:red'>loadid</th></tn>")
for row in result:
    print('<tr>')
    for i in row:
        print("<td>%s</td>" % i)
    print('</tr>')
print('</table>')
conn.close
Миниатюры
Как добавить строку в кортеже и заполнить ее значениями  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.11.2019, 11:52
Ответы с готовыми решениями:

Как добавить строку со значениями (формулами, ссылками) над или под активную строку?
Здравствуйте. Помогите! ЭТО Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count &gt; 1 Then Exit Sub If Not...

Data Grid: как добавить новую строку? Как оперировать со значениями ячеек? Выгрузка?
Итак, для предыдущей задачи решил использовать Data Grid. Но возникли вопросы, как с ним работать. К примеру, как пользователь может...

Как вручную заполнить dategridview. Не могу добавить строку
Не могу добавить строку, столбцы на месте.

13
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
08.11.2019, 12:28
Exle, если конечно верно понял, работать будет только если 2 стенда, превращаю в список списков, но можно как угодно, сам пример важен
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
other = {'StandA':'StandB', 'StandB':'StandA'}
a_list = ['StandA val1', 'StandB val2', 'StandB val3', 'StandA val4' , 'StandA val4']
pairs = list(map(lambda x:x.split(), a_list))
result = []
for index, a_l in enumerate(pairs):
    if index<len(pairs)-1 and a_l[0]==pairs[index+1][0]:
        result.append(a_l)
        result.append([other[a_l[0]], None])
    else:
        result.append(a_l)
if (a_l[0]=='StandA'):
    result.append(['StandB', None])
    
print(result)
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
08.11.2019, 12:31  [ТС]
а как этот код правильно с моим подружить?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
08.11.2019, 12:34
Exle, я откуда знаю как? ты с питоном знаком? я тебе показал как можно решать задачу парности стендов. Дальше твое дело
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
08.11.2019, 12:45  [ТС]
Можно подробнее объяснить что делает код и как скрестить его с кортежем

Добавлено через 4 минуты
я так понял, что этот список надо как-то заполнить из кортежа или преобразовать
a_list = ['StandA val1', 'StandB val2', 'StandB val3', 'StandA val4' , 'StandA val4']
как это правильно сделать?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
08.11.2019, 12:48
Цитата Сообщение от Exle Посмотреть сообщение
как скрестить его с кортежем
в последнем действии превратить в кортеж, если ты про сами пары, то добавляй их кортежами если нужно
если ты не знаешь как списки в кортежи превратить то может рано тебе на текущие задачи замахиваться? может матчасть читануть немного?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
other = {'StandA':'StandB', 'StandB':'StandA'}
a_list = ['StandA val1', 'StandB val2', 'StandB val3', 'StandA val4' , 'StandA val4']
pairs = tuple(map(lambda x:tuple(x.split()), a_list))
result = []
for index, a_l in enumerate(pairs):
    if index<len(pairs)-1 and a_l[0]==pairs[index+1][0]:
        result.append(a_l)
        result.append((other[a_l[0]], None))
    else:
        result.append(a_l)
if (a_l[0]=='StandA'):
    result.append(['StandB', None])
result = tuple(result)   
print(result)
Добавлено через 54 секунды
Цитата Сообщение от Exle Посмотреть сообщение
как это правильно сделать?

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

Добавлено через 55 секунд
то, как тебе БД присылает это скорее всего аналог pairs, выведи в консоль да сравни - там кортеж кортежей
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
08.11.2019, 13:37  [ТС]
может есть вариант это сделать просто запросом SQL а питоном просто выводить кортеж?

Добавлено через 48 минут
ребята есть еще более простые варианты решения, подвластные новичкам в Питоне?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
08.11.2019, 13:45
да, все они описаны в книге Марка Лутца "Изучаем Пайтон", надо только внимательно прочесть
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
08.11.2019, 13:51  [ТС]
я так понимаю данное действие с кортежем с добавлением строки не выполнить без преобразования в список или другие данные?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
08.11.2019, 13:54
Exle,
для ответа на этот вопрос нужно почитать про кортеж. В нем нельзя ничего менять, добавлять, удалять. Нужно на его основе создавать новый список или кортеж
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
08.11.2019, 15:20  [ТС]
а как создать список и наполнить его данными из запроса SQL, можно пример?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
08.11.2019, 15:24
Exle, прочесть главу по спискам в любой книге пайтон. У тебя с детства отвращение к чтению или в чем проблема?
мой код еще можно посмотреть, там как раз идет генерация списка из кортежа.
0
2 / 2 / 1
Регистрация: 13.09.2019
Сообщений: 134
11.11.2019, 19:52  [ТС]
решил пойти другим путем, перегнать результат в словарь, как мне теперь можно решить мою задачку?
Если не сложно на примере?
Как сделать сравнение, если нет пары по "stand", "setting_code" то добавлять эту пару с названием stand, а остальные все заполнить значением
"None"
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#print("Content-type: text/html\n")
import cx_Oracle
conn = cx_Oracle.connect("Login")
curs = conn.cursor().execute('''select filename as stand,setting_code,setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID from WFCFG_DEV 
where loadid like '%20191019%' UNION all select filename as stand,setting_code,
setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID from WFCFG_RU611 where loadid like '%20191019%' order by setting_code''')
columns = [column[0] for column in curs.description]
print(columns)
['stand','setting_code','setting_kind_code','created_by','date_from','bool_value','is_default','loadid']
results = []
for row in curs.fetchall():
    results.append(dict(zip(columns, row)))
    print(results)
curs.close
conn.close
Добавлено через 48 минут
путаюсь по вашему коду:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
curs = conn.cursor().execute('''select filename as stand,setting_code,setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID from WFCFG_DEV 
where loadid like '%20191019%' UNION all select filename as stand,setting_code,
setting_kind_code,created_by,date_from,bool_value,is_default,substr(loadid,1,8) AS LOADID from WFCFG_RU611 where loadid like '%20191019%' order by setting_code''')
other = {'RU611':'DEV', 'DEV':'RU611'}
columns = [column[0] for column in curs.description]
print(columns)
['stand','setting_code','setting_kind_code','created_by','date_from','bool_value','is_default','loadid']
results1 = []
for row in curs.fetchall():
    results1.append(dict(zip(columns, row)))
 
pairs = list(map(lambda x: x.split(), results1))
result = []
for index, a_l in enumerate(pairs):
    if index < len(pairs) - 1 and a_l[0] == pairs[index + 1][0]:
        result.append(a_l)
        result.append([other[a_l[0]], None])
    else:
        result.append(a_l)
if (a_l[0] == 'RU611'):
    result.append(['DEV', None])
 
print(result)
в итоге ошибка:

Traceback (most recent call last):
File "C:/site/scripts/sc.py", line 17, in <module>
pairs = list(map(lambda x: x.split(), results1))
File "C:/site/scripts/sc.py", line 17, in <lambda>
pairs = list(map(lambda x: x.split(), results1))
AttributeError: 'dict' object has no attribute 'split'
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
11.11.2019, 19:57
Цитата Сообщение от Exle Посмотреть сообщение
AttributeError: 'dict' object has no attribute 'split'
все понятно написано. Пока не начнешь осваивать основы так и будешь методом тыка "программировать"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2019, 19:57
Помогаю со студенческими работами здесь

Добавить новый столбец и заполнить значениями из другого столбца
Пишу в VS. Базу смотрю через DB Browser for SQLite. Есть столбец типа TEXT, в нем значения например...

заполнить строку таблицы значениями линии тренда, соответствующими конкретным значениям х
Условие задачи: Даны значения х и у. Например, вот такие: x 1 2 1,3 6 ...

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

После каждого столбца, все элементы которого положи-тельные, добавить новый столбец и заполнить его нулевыми значениями
Помогите написать код. Условие - в программе не должно быть никаких квадратных скобок . Как выполнить без массива понятия не имею....

Заполнить каждую строку матрицы значениями полученными при умножении элементов исходного массива на заданное число
Напишите программу для решения следующей задачи в С++ Дан массив array из целых чисел. Создайте матрицу matrix. Заполните каждую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru