Anonymous
Anonymous
код должен быть понятным 😄
Chebyrash
Andrey
я бы через словарь с лямбдами сделал
Isamu ꧁꧂
Хорошо вам с фиксированным курсом
Andrey
словарь-роутер
Andrey
ибо один и тот же код 4 раза повторяется
Andrey
или без лямбд но с функцией
Anonymous
govnokod.ru/python
Isamu ꧁꧂
if cur in exchange_rates.keys():
alldata['total'] *= exchange_rates[cur]
alldada['cost'] *= exchange_rates[cur]
Isamu ꧁꧂
Я бы так сделал 🤔
Andrey
...
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])
типа того, мухи отдельно, котлеты отдельно) и при изменении курса не нужно искать где что по курсам менять
Anonymous
эта оптимизация кода по моему только в пайтон сообществе на столько развита 😄 все начинают предлагать десятки решений 😄
Andrey
Все зависит от Ваших религиозных и личных предпочтений)
Andrey
не удивлюсь если найдется кто-то кто сюда прикрутит классы и метаклассы ("зачем" это уже другой вопрос)
Andrey
на вкус и цвет фломастеры разные
Aquinary
Aquinary
Из языка надо выжимать по максимому
Isamu ꧁꧂
Слишком длинный джавоподобный тоже утомляет
Isamu ꧁꧂
Надо золотую середину искать, но она у всех своя
Aquinary
Я бы больше упор делал на полиморфизм кода, возможность применения отдельных её частей по отдельности. Наличие методов, которые принимают агрегированные данные из разных источников и возвращают результат и т.д.
Простота не всегда хорошо, особенно если это можно упростить или унифицировать, чтобы сделать ту или иную часть кода как можно менее зависимой от других частей.
Aquinary
Можно китайским кодом
Aquinary
Это когда не список[9], а a0-a9 переменные
Aquinary
И вроде как быстрее работать будет
Aquinary
Проще
Aquinary
Но какой-то такой способ)
Aquinary
Может направит кто на инфу по слиянию словарей, которые находятся в коллекции?
Aquinary
Сижу голову ломаю
Aquinary
Никак не могу сделать это
Aquinary
в коллекции* - в списке
Chebyrash
Aquinary
Да, оно самое
Aquinary
`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}]`
Chebyrash
Какой формат нужен на выходе?
Aquinary
[{'key': 'key2', 'value1': 1},
{'key': 'key1', 'value1': 1, 'value2': 2}]
Aquinary
Тильда не работает почему-то
Aquinary
Проверка
Chebyrash
Andrey 😼
Потому что тильда - для однострочных
Andrey 😼
Chebyrash
Aquinary
Ну... попробую описать, в чём дело)
Chebyrash
Aquinary
Есть разные источники данных.
Каждый источник данных отдаёт 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 }]
Aquinary
Тяжело здесь форматировать
Ivan
Aquinary
https://pastebin.com/fRKFJYJn
Andrey 😼
Сделай список списков, пройдись по нему мапом, а внутри мапа - редьюсом и update
Andrey 😼
(ну, это приблизительно, я не питонист ¯\_(ツ)_/¯)
Andrey 😼
Кайнд оф зис?
Влад
Isamu ꧁꧂
Есть разные источники данных.
Каждый источник данных отдаёт 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}
Isamu ꧁꧂
А, стой, там список со словарями
Aquinary
Кайнд оф зис?
Сейчас попробуем разобраться, у меня же один список и внутри все словари. Может смогу как-то адоптировать
Isamu ꧁꧂
А складывать их пробовал?
Andrey 😼
Andrey 😼
Я верно понимаю, что итог - это список с объединенным результатом первого списка и объединенным результатом второго?
Andrey 😼
Если их всегда два - то можно без мапа, через редьюс и dict(a, **b)
Andrey 😼
https://repl.it/@andv/OlivedrabHarmfulNumericalanalysis
Aquinary
https://pastebin.com/eZFs2prS
Как-то так в общем плане.
1. Получаю списки данных, отправляю их в self.product под нужными ключами
2. Прохожу self. product и вытаскиваю наименования ключей, засовываю их в список lists
3. Прохожу по списку lists и теперь уже вытаскиваю нужные мне данные. Не знаю как объснить, просто прохожу по всем ключам в цикле
4. Формирую единый список result со словарями внутри
Aquinary
Все данные содержат наимнование, остальное может отличаться. Задача в том, чтобы оставить только уникальные по имени товары с добавлением ключей, найденных у дубликатов
Aquinary
Я пока почитаю то, что выше мне написали
Vladimir
Aquinary
Может получится
Aquinary
Вроде работает. За основу взят тот же самый список, в котором свалено кучу словарей
Aquinary
Дома протестить надо на корректность
Aquinary
Потому что я хз как оно работает
Alexander
Оптимизация питона) Значения до 255 (примерно ) уже проинициализированы заранее и имеют одинаковый id. Более того, если ты напишешь что то вроде a, b = 257, 257( или a = 257; b = 257) , то получишь a is b == true.
Aquinary
Ребята
Aquinary
По поводу комментариев
Aquinary
Вопрос такой
Aquinary
Куда его было бы правильнее впихнуть?
Это не магия, но стоило бы такие моменты тоже пояснять
Aquinary
До lists, после, или внутри for?
Aquinary
И "получаем" или "получить"?
.
Какая разница?
Aquinary
Абы как не хочется)
.
Ставишь комменты как тебе удобно и было понятно