|
0 / 0 / 0
Регистрация: 16.03.2019
Сообщений: 81
|
||||||
Распарсить структуру с проверкой12.12.2019, 15:41. Показов 1567. Ответов 11
Есть структура:
G = [C1C, B1B, D2D, C4F] Буквы в структуре меняются т.е. может быть и такое: G = [M6C, N2B, F4D, C9F] Есть словарь значений: D = {'G10': [['4', '5', '7'], ['4', '31', '7', '7'], ['5', '5', '7']], 'G5': [['4', '5', '6', '8'], ['4', '7', '6'], ['3', '5', '6'], ['3', '6', '7']], 'G1': [['3', '4', '6'], ['3', '2', '6'], ['6', '2', '6'], ['4', '2', '6']], 'G2': [['5', '5', '7'], ['3', '6', '7'], ['5', '5', '7','4']], 'G4': [['3', '5', '6', '4'], ['3', '5', '6']]} 1 элемент это C1C, второй B1B и т.д. Нужно выделить все 1 значения, потом 2 и т.д.: 'G10': [['4'], ['4'], ['5']], 'G5': [['4'], ['4'], ['3'], ['3']], 'G1': [['3'], ['3'], ['6'], ['4']], 'G2': [['5'], ['3'], ['5']], 'G4': [['3'], ['3']] Далее сделать из них общий список значений для каждого элемента в структуре: G_Mass1 = [['4', '4', '5'], ['4', '4', '3', '3'], ['3', '3', '6', '4'], ['5', '3', '5'], ['3', '3']] G_Mass2 = .... G_Mass3 = .... G_Mass4 = .... То есть я уже знаю, что здесь G_Mass1[0][0] это 1 значение G10 и это значение относиться к структуре G[0] т.е. C1C. Сделать проверку структуры: к примеру: G_Mass4[0][3] это значение '4' которое относиться к структуре G[3] т.е. C4F. Мои попытки: 1) Не могу разобраться как распарсить 4 элемент (C4F) 2) Писал на сколько знал, конечно много мусора, да и совсем недавно пытаюсь кодить, хотелось бы сократить код. 3) Из за того что не разобрался с 4 элементом, проверку не делал.
[['4', '4', '5'], ['4', '4', '3', '3'], ['3', '3', '6', '4'], ['5', '3', '5'], ['3', '3']] [['5', '31', '5'], ['5', '7', '5', '6'], ['4', '2', '2', '2'], ['5', '6', '5'], ['5', '5']] [['7', '7', '7'], ['6', '6', '6', '7'], ['6', '6', '6', '6'], ['7', '7', '7'], ['6', '6']]
0
|
||||||
| 12.12.2019, 15:41 | |
|
Ответы с готовыми решениями:
11
Распарсить многоуровневую переменную структуру Распарсить строку и записать значения в структуру Распарсить нестандартную структуру и заполнить ею ячейки |
|
0 / 0 / 0
Регистрация: 16.03.2019
Сообщений: 81
|
|
| 13.12.2019, 09:49 [ТС] | |
|
Welemir1, Я думал может забить пустые значения нулями, но я еще не понял, как это сделать, должно получится для C4F примерно такое: [['0', '7', '0'],[ '8', 0, '0', '0'],['0', '0', '4'], ['4', '0']], это мне нужно для формул далее.
Добавлено через 19 минут Welemir1, но для этого нужно изменить основной список, добавить '0' в конце каждого под-списка длина которого меньше максимальной длины под-списка в ключе и так для каждого ключа т.е: 'G10': [['4', '5', '7', '0'], ['4', '31', '7', '7'], ['5', '5', '7', '0']] .... т.е. сравнивать под-списки с длиной максимально большого под-списка в ключе и добавлять в конец '0' , если не равен длине максимально большого под-списка. Как то так. Добавлено через 11 минут Welemir1, основной словарь.
0
|
|
|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
||||||
| 13.12.2019, 09:55 | ||||||
|
Ты можешь добавлять значения в конец списка, просто используя append()
Добавлено через 43 секунды Проверяешь одномерный список на длину, если он меньше того, что тебе надо используешь append() Добавлено через 28 секунд Так ты и заполнишь список нулями или чем надо. Добавлено через 2 минуты
Вывод: [['4', '5', '7', 0], ['4', '31', '7', '7'], ['5', '5', '7', 0]]
0
|
||||||
|
0 / 0 / 0
Регистрация: 16.03.2019
Сообщений: 81
|
||||||
| 13.12.2019, 11:30 [ТС] | ||||||
|
Damenikx, крутил, вертел, вышло коряво, но то что хотел сделал, 100% есть способ распарсить выше структуру в несколько строк, знать бы, только как.
'G5': [['4', '5', '6', '8'], ['4', '7', '6', 0], ['3', '5', '6', 0], ['3', '6', '7', 0]], 'G1': [['3', '4', '6', 0], ['3', '2', '6', 0], ['6', '2', '6', 0], ['4', '2', '6', 0]], 'G2': [['5', '5', '7', 0], ['3', '6', '7', 0], ['5', '5', '7', '4']], 'G4': [['3', '5', '6', '4'], ['3', '5', '6', 0]]} Ну и далее с таким словарем парсится струтура C4F. Но увы это очень длинный код и скорее всего корявый. Добавлено через 6 минут Damenikx, вот к примеру добавил я в под-список 'G10' 5 значение [['4', '5', '7'], ['4', '31', '7', '7', '5'], ['5', '5', '7']] т.к такое тоже может быть и я это не подумал сразу, теперь нужно делать еще цикл, для того чтобы добавлялся не один 0 а два, три и т.д, либо же проверял длину под-списка, сравнивал с длиной (max(n)-1) +=1 добавлял '0', опять заморочка)))
0
|
||||||
|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
|
| 13.12.2019, 12:18 | |
|
Getter17, создайте переменную, которая будет содержать необходимую длину подсписка и проверяйте, если меньше - заполняем нулями. Вы сделали правильно, проверяете длину максимальной строки, а разницу остальных строк заполняете нулями. В чём заморочка? Не знаете как написать?
Добавлено через 39 секунд Можно сделать всё в одном цикле. Сначала проверяем длину, заполняем, делаем, что надо. Добавлено через 1 минуту Getter17, я бы не сказал, что у Вас корявый код, у меня обычно - ещё коряеве
0
|
|
|
0 / 0 / 0
Регистрация: 16.03.2019
Сообщений: 81
|
||||||
| 13.12.2019, 15:03 [ТС] | ||||||
|
Damenikx, Я сделал немного иначе, ввиду всей кривизны, получилось, теперь неважно сколько элементов и значений в структуре)))
{'G10': [['4', '5', '7', '4', 0], ['4', '31', '7', '7', '5'], ['5', '5', '7', 0, 0]], 'G5': [['4', '5', '6', '8', 0], ['4', '7', '6', 0, 0], ['3', '5', '6', '8', '4'], ['3', '6', '7', 0, 0]], 'G1': [['3', '4', '6', 0, 0], ['3', '2', '6', 0, 0], ['6', '2', '6', 0, 0], ['4', '2', '6', 0, 0]], 'G2': [['5', '5', '7', 0, 0], ['3', '6', '7', 0, 0], ['5', '5', '7', '4', 0]], 'G4': [['3', '5', '6', '4', 0], ['3', '5', '6', 0, 0]]} Добавлено через 5 минут Damenikx, Вопрос еще в другом насколько def и вся эта кривизна будет загружать систему, просто на примере это делается быстро, а когда файл и записей в файле на (24 часа+) то я даже не знаю как быть по быстродействию.
0
|
||||||
|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
|
| 13.12.2019, 15:26 | |
|
Надо оптимизировать, почитать литературу, подождать пока более умные форумчане прочтут тему.
0
|
|
|
Автоматизируй это!
|
|||||||||||||
| 13.12.2019, 15:59 | |||||||||||||
Сообщение было отмечено Getter17 как решение
Решение
Исхожу из :
1
|
|||||||||||||
|
0 / 0 / 0
Регистрация: 16.03.2019
Сообщений: 81
|
|
| 13.12.2019, 16:36 [ТС] | |
|
Welemir1, наверно это магия
0
|
|
|
0 / 0 / 0
Регистрация: 16.03.2019
Сообщений: 81
|
|
| 13.12.2019, 16:42 [ТС] | |
|
Welemir1, Благодарю, боюсь смотреть туда даже, если только глазком
0
|
|
| 13.12.2019, 16:42 | |
|
Помогаю со студенческими работами здесь
12
Как создать структуру, где будут поля с указателями на эту же структуру? объявить динамическую структуру данных, выделить память под указатель на структуру Объявить динамическую структуру данных, выделить память под указатель на структуру
Реализуйте структуру данных, представляющую собой расширенную структуру стек Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|