• Как отправить только не None элементы?

    @bibliophile
    Как вариант, можно сделать список с нужными тебе ключами, в том порядке в котором ты добавляешь данные из своего словаря. В свой словарь тебе придется добавить 3 ключа для таких штук
    " "
    ':\n'
    '\n'
    Я их назвал: space, next_one, next_two
    new_msg= {'date': 3, 'space': ' ', 'from': None, "next_one": ':\n', 'text': 'there is some text', 'next_two': '\n', 'video': 'there is video'}

    Дальше делаешь список с элементами, которые идентичны твоим ключам, в том порядке в котором ты собираешь сообщение
    cycle_list = ['date', 'space', 'from', 'next_one', 'text', 'next_two', 'video']

    Ну а дальше склеиваешь:
    msg_to_send = ''.join([''+str(new_msg[i]) for i in cycle_list if new_msg[i]!=None])

    Если что то вот эта строка - [''+str(new_msg[i]) for i in cycle_list if new_msg[i]!=None] имеет такой смысл:
    К пустой строке добавь строковое представление ключа из словаря new_msg
    Иди по списку cycle_list, если значение из словаря new_msg под ключем i не None, то его строковое представление прикрепи к пустой строке, в конце у тебя получается вот такой массив:
    ['3', ' ', ':\n', 'there is some text', '\n', 'there is video']

    join собирает все элементы этого списка в одну строку, которая будет выглядеть вот так:
    3 :
    there is some text
    there is video

    Кстати, если нужно чтобы вместо None подставлялось другое значение, то просто реализуешь склеивание через переменную и добавляешь условие:
    c = ''
    msg_to_send = ''.join([c+str(new_msg[i]) if new_msg[i]!=None else c+"no data" for i in cycle_list])

    Будет такой вывод:
    3 no data:
    there is some text
    there is video

    Думаю это костыльное решение, но должно работать)
    Ответ написан
    Комментировать
  • Не могу понять простой код python. Как понять код?

    @bibliophile
    Повторю все тоже самое что и выше, только чуточку подробней. У nums есть какое то количество элементов, это число которое как раз возвращает len(nums)(к примеру 8, то есть в массиве 8 элементов), то есть:
    for i in range(8) - думаю ты понимаешь что это
    теперь мы достаем из массива nums те элементы которые находятся по индексу i, то есть у нас получается цепочка nums[0], nums[1], nums[2] и т.д.
    Каждый раз когда мы берем один элемент из массива nums мы проверяем: есть ли такой ключ в словаре buff_dict, если да, то мы говорим:
    Верни мне массив первым элементом которого будет значение которое лежит в словаре buff_dict по ключу nums[i], а вторым элементом верни сам индекс i.
    Ответ написан
    Комментировать