
Isamu ꧁꧂
14.03.2018
09:50:45
Хорошо вам с фиксированным курсом

Andrey
14.03.2018
09:50:54
словарь-роутер
ибо один и тот же код 4 раза повторяется
или без лямбд но с функцией

Google

Stan671
14.03.2018
09:54:51
govnokod.ru/python

Isamu ꧁꧂
14.03.2018
09:55:04
if cur in exchange_rates.keys():
alldata['total'] *= exchange_rates[cur]
alldada['cost'] *= exchange_rates[cur]
Я бы так сделал ?

Andrey
14.03.2018
10:04:35
...
def manage_data(cur):
global alldata
alldata['total'] *= exchange_rates[cur]
alldada['cost'] *= exchange_rates[cur]
courses = {
"EUR": 58,
"USD": 62,
"GBP": 71,
"UAH": 2,
}
cource_type = "EUR"
manage_data(courses[cource_type])
типа того, мухи отдельно, котлеты отдельно) и при изменении курса не нужно искать где что по курсам менять

Stan671
14.03.2018
10:06:38
эта оптимизация кода по моему только в пайтон сообществе на столько развита ? все начинают предлагать десятки решений ?

Andrey
14.03.2018
10:07:12
Все зависит от Ваших религиозных и личных предпочтений)
не удивлюсь если найдется кто-то кто сюда прикрутит классы и метаклассы ("зачем" это уже другой вопрос)

morpho
14.03.2018
10:08:04
Вы будто пишете шеллкод на асме..)
Оптимизаторы)))

Andrey
14.03.2018
10:09:32
на вкус и цвет фломастеры разные

Aquinary
14.03.2018
10:11:50
Из языка надо выжимать по максимому

morpho
14.03.2018
10:13:43
Не, ну правда, какой смысл в этом практический сделать очень краткий код на питоне? Может я чего-то не понимаю

Google

Isamu ꧁꧂
14.03.2018
10:18:26
Слишком длинный джавоподобный тоже утомляет
Надо золотую середину искать, но она у всех своя

Aquinary
14.03.2018
10:19:01

morpho
14.03.2018
10:23:54
Вы аду видели? Там избыточного кода...
Зато все ясно и безопасно)
Не думаю, что дело в краткости, вот инструментарий да
Хотя дело вкуса, просто хотелось услышать мнения) но спасибо, вас понял

Aquinary
14.03.2018
10:28:31
Можно китайским кодом
Это когда не список[9], а a0-a9 переменные
И вроде как быстрее работать будет
Проще
Но какой-то такой способ)
Может направит кто на инфу по слиянию словарей, которые находятся в коллекции?
Сижу голову ломаю
Никак не могу сделать это
в коллекции* - в списке

xPushkin
14.03.2018
14:19:03

Aquinary
14.03.2018
14:20:30
Да, оно самое
`collections = [{'key': 'key1', 'value1': 1},
{'key': 'key2', 'value1': 1},
{'key': 'key1', 'value1': 1, 'value2': 2}]`
в это
`collections = [{'key': 'key2', 'value1': 1},
{'key': 'key1', 'value1': 1, 'value2': 2}]`

Google

xPushkin
14.03.2018
14:21:03
Какой формат нужен на выходе?

Aquinary
14.03.2018
14:22:49
[{'key': 'key2', 'value1': 1},
{'key': 'key1', 'value1': 1, 'value2': 2}]
Тильда не работает почему-то
Проверка

xPushkin
14.03.2018
14:23:13

Andrey ?
14.03.2018
14:23:16
Потому что тильда - для однострочных

xPushkin
14.03.2018
14:23:57

Aquinary
14.03.2018
14:24:28
Ну... попробую описать, в чём дело)

xPushkin
14.03.2018
14:26:36

Aquinary
14.03.2018
14:31:24
Есть разные источники данных.
Каждый источник данных отдаёт json-кашу из кучи разных параметров и вложений внутри себя. Я обрабатываю эту кашу со всех источников и возвращаю список словарей с нужными мне ключами:
lists_one = [{'name': 'name', 'value': 1}, {'name': 'name2', 'value': 1}]
lists_two = [{'name': 'name', 'value2': 2}, {'name': 'name2', 'value2': 2}]
А суть в том, что нужно теперь эти два списка объединить в один:
result = [{'name': 'name', 'value': 1, 'value2': 2 }
{'name': 'name1', 'value': 1, 'value2': 2 }]
Тяжело здесь форматировать

Иван
14.03.2018
14:33:08

Aquinary
14.03.2018
14:34:46
https://pastebin.com/fRKFJYJn

Andrey ?
14.03.2018
14:36:06
Сделай список списков, пройдись по нему мапом, а внутри мапа - редьюсом и update
(ну, это приблизительно, я не питонист ¯\_(ツ)_/¯)
Кайнд оф зис?

Влад
14.03.2018
14:43:35

Isamu ꧁꧂
14.03.2018
14:44:22
Есть разные источники данных.
Каждый источник данных отдаёт json-кашу из кучи разных параметров и вложений внутри себя. Я обрабатываю эту кашу со всех источников и возвращаю список словарей с нужными мне ключами:
lists_one = [{'name': 'name', 'value': 1}, {'name': 'name2', 'value': 1}]
lists_two = [{'name': 'name', 'value2': 2}, {'name': 'name2', 'value2': 2}]
А суть в том, что нужно теперь эти два списка объединить в один:
result = [{'name': 'name', 'value': 1, 'value2': 2 }
{'name': 'name1', 'value': 1, 'value2': 2 }]
{**lists_one, **lists_two}

Google

Isamu ꧁꧂
14.03.2018
14:45:35
А, стой, там список со словарями

Aquinary
14.03.2018
14:45:36
Кайнд оф зис?
Сейчас попробуем разобраться, у меня же один список и внутри все словари. Может смогу как-то адоптировать

Isamu ꧁꧂
14.03.2018
14:46:27
А складывать их пробовал?

Andrey ?
14.03.2018
14:47:18
Я верно понимаю, что итог - это список с объединенным результатом первого списка и объединенным результатом второго?
Если их всегда два - то можно без мапа, через редьюс и dict(a, **b)
https://repl.it/@andv/OlivedrabHarmfulNumericalanalysis


Aquinary
14.03.2018
14:55:55
https://pastebin.com/eZFs2prS
Как-то так в общем плане.
1. Получаю списки данных, отправляю их в self.product под нужными ключами
2. Прохожу self. product и вытаскиваю наименования ключей, засовываю их в список lists
3. Прохожу по списку lists и теперь уже вытаскиваю нужные мне данные. Не знаю как объснить, просто прохожу по всем ключам в цикле
4. Формирую единый список result со словарями внутри
Все данные содержат наимнование, остальное может отличаться. Задача в том, чтобы оставить только уникальные по имени товары с добавлением ключей, найденных у дубликатов
Я пока почитаю то, что выше мне написали

V
14.03.2018
14:57:10
легально.

Aquinary
14.03.2018
14:57:14
Может получится
Дома протестить надо на корректность
Потому что я хз как оно работает

Alexander
15.03.2018
05:27:38
Оптимизация питона) Значения до 255 (примерно ) уже проинициализированы заранее и имеют одинаковый id. Более того, если ты напишешь что то вроде a, b = 257, 257( или a = 257; b = 257) , то получишь a is b == true.

Aquinary
15.03.2018
07:29:00
Ребята
По поводу комментариев
Вопрос такой

Google

Aquinary
15.03.2018
07:30:49
До lists, после, или внутри for?
И "получаем" или "получить"?

Никита
15.03.2018
07:38:40
Какая разница?

Aquinary
15.03.2018
07:39:31
Абы как не хочется)

Никита
15.03.2018
07:40:06
Ставишь комменты как тебе удобно и было понятно
Ну а вообще, такие простые вещи в коде не комментируют

Aquinary
15.03.2018
07:43:53
Если рассматривать цикл как единый кусок, то да
Но для чего это делается - не совсем может быть понятным в контексте целого метода. Нет, я понимаю, что описать действия метода надо в докстринг, но вот некоторые вещи, вроде "зачем я делаю отдельный список ключей словаря" всё же нуждаются хоть в каком-нибудь пояснении
Ну, не мне говорить, не так много опыта ?
Иногда казусы на ровном месте бывают, один из ключей имеет значение "0", хотя он должен явно иметь эту цифру больше.
А я просто забыл, что разные источники данных возвращают разные наименования и чтобы всё работало как надо, нужно вернуть полный список всех данных
Там получается, что за раз не получится гетом больше 100 позиций получить

V
15.03.2018
10:07:51

Aquinary
15.03.2018
14:09:07
А self параметры в классе докстрингом надо описывать в init или в самом классе?