Vladimir
Я так и не понял зачем это нужно
Alex
да, это не описание проблемы
Alex
это классический xyproblem.info
Vladimir
Поди в цикле удаляет элементы из списка, по которому итерация идет
BotoTVOREC
python ide online народ как называется? нормальную скажите и бесплатную
Дмитрий
python ide online народ как называется? нормальную скажите и бесплатную
а чем не устраивает топ отсюда? https://lmgtfy.com/?q=python+ide+online
BotoTVOREC
а чем не устраивает топ отсюда? https://lmgtfy.com/?q=python+ide+online
Я пытался найти , но все не то было repl искал , уже нашел
Alex
и главный вопрос - зачем?
Александр
Всем, привет! Есть список именованных кортежей [<class '__main__.pans'>, <class '__main__.pans'> ...] Каждый кортеж содержит поля listPan[1]._fields ('name', 'thickness', 'article', 'length', 'width', 'cnt', 'band_x1', 'band_x2', 'band_y1', 'band_y2', 'num', 'note') Как сгруппировать данный список по всем полям, кроме поля cnt и суммировать по полю cnt?
Ilya
спаисбо всем, разобрался с удалением элементов при этом сохраняя индекс других элементо: dict = {'1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6,} del dict['2'] print(dict)
Александр
проход по всем кортежам + проход по полям каждого картежа, сумму можно считать в словаре
так как это именованный кортеж, т.е. доступ к полям по типу pan.name, а не pan['name'], то затрудняюсь, как это сделать
Alex
зы у именованного кортежа есть доступ по индексам
Александр
зы у именованного кортежа есть доступ по индексам
но мне надо группировать не по индексам, а по списку ключей, типа: ('name', 'thickness', 'article')
Александр
т.е. задать те поля, по которым отобрать совпадающие, что бы суммировать их колличесвто
Aidar
не понимаю в чем проблема, если есть полный список полей
Ilya
только это уже не “индекс”
а чем тогда индекс отличается от ключа ?
Alex
тем что индекс массива - это его *порядковый* номер в массиве.
Александр
что возвращает listPan[1]._fields?
listPan[1]._fields ('name', 'thickness', 'article', 'length', 'width', 'cnt', 'band_x1', 'band_x2', 'band_y1', 'band_y2', 'num', 'note')
Александр
нуууу, в чем проблема? вы хотите чтоб мы вам код написали?
когда я пользовался словарём, а не именованным кортежем, то группировку делал такой функцией def group_list_panels(lst_dpars, listkey=LISTKEY): """Группирует словари в списке lst_dpars по совпадающим ключевым значениям из списка listkey Возвращает список словарей из двух элементов '_key' и 'data' '_key' содержит кортеж одинаковых значений в порядке ключей представленных в listkey для словарей представленных в data >>> [{'_key': ('полка', 700, 400, 0, 1, 1, 1, 1), ... 'data': [{'UnitPos': 1, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 4, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 6, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 8, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 10, 'holes': [1, 2, 3], 'другие парметры': 5}]}, ... {'_key': ('стенка', 700, 400, 0, 1, 1, 1, 1), ... 'data': [{'UnitPos': 3, 'holes': [1, 2, 3], 'другие парметры': 5}]}, ... ] """ def _groupid_drop(d): for nm in listkey: del d[nm] return d lst_dpars.sort(key=lambda x: [x[k] for k in listkey]) return [{ '_key': i, 'data': list(map(_groupid_drop, grp))} for i, grp in itertools.groupby(lst_dpars, operator.itemgetter(*map(lambda nm: nm,listkey))) ]
Aidar
когда я пользовался словарём, а не именованным кортежем, то группировку делал такой функцией def group_list_panels(lst_dpars, listkey=LISTKEY): """Группирует словари в списке lst_dpars по совпадающим ключевым значениям из списка listkey Возвращает список словарей из двух элементов '_key' и 'data' '_key' содержит кортеж одинаковых значений в порядке ключей представленных в listkey для словарей представленных в data >>> [{'_key': ('полка', 700, 400, 0, 1, 1, 1, 1), ... 'data': [{'UnitPos': 1, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 4, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 6, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 8, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 10, 'holes': [1, 2, 3], 'другие парметры': 5}]}, ... {'_key': ('стенка', 700, 400, 0, 1, 1, 1, 1), ... 'data': [{'UnitPos': 3, 'holes': [1, 2, 3], 'другие парметры': 5}]}, ... ] """ def _groupid_drop(d): for nm in listkey: del d[nm] return d lst_dpars.sort(key=lambda x: [x[k] for k in listkey]) return [{ '_key': i, 'data': list(map(_groupid_drop, grp))} for i, grp in itertools.groupby(lst_dpars, operator.itemgetter(*map(lambda nm: nm,listkey))) ]
вы зациклились на изменении представления данных, если вы смогли написать подобное (конечно если это вы написали), то не вижу проблем, заменить обращение по ключу на getattr. И да, довольно сложно написано, коротко не всегда хорошо и понятно
Александр
что такое pan?
список кортежей listPan
Aidar
список кортежей listPan
ну у простого списка точно такого нет
Aidar
когда я пользовался словарём, а не именованным кортежем, то группировку делал такой функцией def group_list_panels(lst_dpars, listkey=LISTKEY): """Группирует словари в списке lst_dpars по совпадающим ключевым значениям из списка listkey Возвращает список словарей из двух элементов '_key' и 'data' '_key' содержит кортеж одинаковых значений в порядке ключей представленных в listkey для словарей представленных в data >>> [{'_key': ('полка', 700, 400, 0, 1, 1, 1, 1), ... 'data': [{'UnitPos': 1, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 4, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 6, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 8, 'holes': [1, 2, 3], 'другие парметры': 5}, ... {'UnitPos': 10, 'holes': [1, 2, 3], 'другие парметры': 5}]}, ... {'_key': ('стенка', 700, 400, 0, 1, 1, 1, 1), ... 'data': [{'UnitPos': 3, 'holes': [1, 2, 3], 'другие парметры': 5}]}, ... ] """ def _groupid_drop(d): for nm in listkey: del d[nm] return d lst_dpars.sort(key=lambda x: [x[k] for k in listkey]) return [{ '_key': i, 'data': list(map(_groupid_drop, grp))} for i, grp in itertools.groupby(lst_dpars, operator.itemgetter(*map(lambda nm: nm,listkey))) ]
если я правильно понял что происходит, то надо заменить operator.itemgetter(*map(lambda nm: nm,listkey)) на что то типо lamda f: tuple(*map(lambda nm: getattr(f, nm), listkey))
Александр
если я правильно понял что происходит, то надо заменить operator.itemgetter(*map(lambda nm: nm,listkey)) на что то типо lamda f: tuple(*map(lambda nm: getattr(f, nm), listkey))
В принципе да, но хотелось более изящного решения, как у sql запросов. Ладно, подумаю. Спасибо
Aidar
В принципе да, но хотелось более изящного решения, как у sql запросов. Ладно, подумаю. Спасибо
вот то что вы скинули не лучшее решение, имхо, особенно в проде, я иногда тоже подобное писал и получал нагоняй на код-ревью, код не очевидный, надо потратить много времени на понимание, большая вложенность, сложно дебажить или как в вашем случае вносить правки
Fᴏʀᴅᴇɴ
подскажите, так вообще норм писать? или лучше модули?
Co(n)stantine👨‍🔬
кокоито джава стайл
Fᴏʀᴅᴇɴ
то есть class Foo: bar = 1 class Bar: foo = 2
Fᴏʀᴅᴇɴ
использовать удобно, но я сомневаюсь что такое месиво - pythonic way
Fᴏʀᴅᴇɴ
это обертка над киви апи, нужно же как-то логически объединить все
Fᴏʀᴅᴇɴ
пасиб
dev
Приветствую. Вопрос по selenium'у Как-то можно добиться того, чтобы whoer.net/ext не показывал в особенностях подключения webdriver=true? Какое-то может особое сочетание версии бразуера и geckodriver?
Tishka17
создавать классы внтури классов - это очень плохо
Tishka17
подскажите, так вообще норм писать? или лучше модули?
вынеси их на уровень выше, зачем тебе классы внутри класса?
Fᴏʀᴅᴇɴ
вынеси их на уровень выше, зачем тебе классы внутри класса?
это не мой код) я только изучаю, как делать нормальные библиотеки
Fᴏʀᴅᴇɴ
видать плохой пример
Tishka17
https://github.com/python-telegram-bot/python-telegram-bot попробуй это в качестве примера
Alexey
SQLAlchemy с asyncio никак нельзя заюзать, да?
koder
SQLAlchemy с asyncio никак нельзя заюзать, да?
процедурное подмножество как-то там поддерживает async
koder
но ООП - нет
koder
точнее не все из именно мапера вообще можно async сделать
Futorio
SQLAlchemy с asyncio никак нельзя заюзать, да?
Если сильно захотеть то можно. Например для postgres есть aiopg.sa и sqlalchemy как конструктор запросов
Futorio
суть в общем такая асинхронный драйвер к базе + конструктор запросов алхимии
Futorio
Если я правильно понял
Alexey
Vladimir
как в wiresharke отсматривать post запросы отправленные с определенного браузера
Alex
а зачем ты сразу с нескольких браузеров отправляешь запросы?
Vladimir
мне просто нужно посмотреть какие я параметры отправляю при регестрации на одном сайте
Vladimir
я еще особо не разобрался в wireshark
Vladimir
а middle man ?
Vladimir
этож вроде так называется
Дмитрий
а middle man ?
Он не вайршарком делается в случае https, емним
Andrew
а middle man ?
man in the middle
Дмитрий
Но это не слишком законно
Aidar
как в wiresharke отсматривать post запросы отправленные с определенного браузера
Зачем усложнять? чем дев тулзы браузерные не подходять? там есть network
Vladimir
потому что при регистрации весь log network'a в браузере обновляется, соответственно я не могу посмотреть мой запрос
adamfull
Всем привет, почему этот код не работает [elt for elt in row for row in data], data представляет из себя что то типо [(1, 2), (3, 4)...]
Tishka17
Местами for поменяй
adamfull
Уже, спасибо
Anonymous
Необходим человек имеющий опыт работы с OpenCV. Есть небольшая работа. Писать лс.
Pavel
Pavel
Pavel
почему у них разный тайп
Pavel
как это возможно