Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
half-life

Ник В

  • 27
    вклад
  • 28
    вопросов
  • 63
    ответа
  • 32%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Есть ли в Python возможность нахождения пути в словаре до определенного значения?

    half-life
    Ник В @half-life
    from dataclasses import dataclass
    from itertools import chain
    from itertools import filterfalse
    from itertools import product
    from typing import List
    
    
    @dataclass
    class Obj:
        p1: str
        p2: str
        p1_odds: float
        p2_odds: float
        is_found: bool = False
        external_id: int = -1
    
    
    API_RESPONSE = {
        'sportId': 123,
        'last': 216699817,
        'league': [
            {
                'id': 3742,
                'name': 'WTA French Open - R3',
                'events': [
                    {
                        'id': 9999999999999,
                        'starts': '2019-05-31T11:30:00Z',
                        'home': 'Sloane Stephens',
                        'away': 'Polona Hercog',
                        'rotNum': '8705',
                        'liveStatus': 0,
                        'status': 'I',
                        'parlayRestriction': 2,
                        'parentId': 994897148,
                        'altTeaser': False,
                        'resultingUnit': 'Sets'
                    },
                    {
                        'id': 994906276,
                        'starts': '2019-05-31T11:30:00Z',
                        'home': 'Veronika Kudermetova (+1.5 Sets)',
                        'away': 'Kaia Kanepi (-1.5 Sets)',
                        'rotNum': '8705',
                        'liveStatus': 0,
                        'status': 'I',
                        'parlayRestriction': 2,
                        'parentId': 994897148,
                        'altTeaser': False,
                        'resultingUnit': 'Sets'
                    }
                ]
            },
            {
                'id': 3735,
                'name': 'WTA French Open - Doubles',
                'events': [
                    {
                        'id': 994977085,
                        'starts': '2019-05-31T11:30:00Z',
                        'home': 'L Hradecka / A Klepac',
                        'away': 'S Kenin / A Petkovic',
                        'rotNum': '15571',
                        'liveStatus': 0,
                        'status': 'O',
                        'parlayRestriction': 2,
                        'altTeaser': False,
                        'resultingUnit': 'Regular'
                    },
                    {
                        'id': 995164497,
                        'starts': '2019-05-31T12:45:00Z',
                        'home': 'M Puig / S Rogers',
                        'away': 'S Hsieh / B Strycova',
                        'rotNum': '15575',
                        'liveStatus': 0,
                        'status': 'I',
                        'parlayRestriction': 2,
                        'altTeaser': False,
                        'resultingUnit': 'Regular'
                    }
                ]
            }
        ]
    }
    
    
    def find_matching(container: List[Obj], api_response: dict) -> List[Obj]:
        events = (
            tuple(
                (e.get('id', 0), e.get('home', '')) for e in
                chain.from_iterable(
                    filter(None, (event.get('events', []) for event
                                  in api_response.get('league', [])))
                )
            )
        )
        result = []
        filtered = filterfalse(lambda x: x[0].p1 != x[1][1], product(container, events))
        for obj, item in filtered:
            obj.external_id = item[0]
            obj.is_found = True
            result.append(obj)
        return result
    
    
    if __name__ == '__main__':
        data = [
            Obj(
                p1='Sloane Stephens',
                p2='Polona Hercog',
                p1_odds=1.2,
                p2_odds=3.8,
            ),
            Obj(
                p1='Belinda Bencic',
                p2='Donna Vekic',
                p1_odds=1.8,
                p2_odds=2.1,
            ),
        ]
        result = find_matching(data, API_RESPONSE)
        print(result)
    
    # [Obj(p1='Sloane Stephens', p2='Polona Hercog', p1_odds=1.2, p2_odds=3.8, is_found=True, external_id=9999999999999)]
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как находить теги со сложными именами классов?

    half-life
    Ник В @half-life
    xpath
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Возможно ли собрать имя константы из частей?

    half-life
    Ник В @half-life
    Маппинг, не?
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как составить проверку?

    half-life
    Ник В @half-life
    name = input('Введите ваше имя: ').strip().lower()
    if name in ('kirill', 'maks'):
        print(f'Привет {name.capitalize()}')
        print('Готов ввести свой пароль?')
    else:
        print('Не нашел вас')
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Где найти или чем заменить DonationAlerts API?

    half-life
    Ник В @half-life
    https://habr.com/ru/sandbox/109444/
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • А что можно почитать толково-вводного по кодингу на Vue.js для iOS на русском языке?

    half-life
    Ник В @half-life
    https://nativescript-vue.org/ru/docs/introduction/
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как прочитать файлы на сервере windows?

    half-life
    Ник В @half-life
    https://habr.com/ru/post/165059/
    https://habr.com/ru/post/135541/
    https://habr.com/ru/post/150047/
    https://habr.com/ru/company/infopulse/blog/131835/
    https://habr.com/ru/company/jetinfosystems/blog/336608/
    https://itc-life.ru/skript-sbora-informacii-s-servera/
    https://tproger.ru/digest/sysadmin-compilation
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как сделать select по timestamp колонке имея только дату?

    half-life
    Ник В @half-life
    https://www.postgresql.org/docs/current/functions-...
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • LXML: как получить все дочерние элементы определенного типа?

    half-life
    Ник В @half-life
    Как-то так
    import xml.etree.cElementTree as ET
    from typing import List
    from typing import NamedTuple
    from typing import Tuple
    
    
    class User(NamedTuple):
        internal_id: int
        name: str
        age: int
        images: Tuple[str]
    
    
    XML: str = """
    <root>
    <user internal-id="1233232323">
      <name>Alex</name>
      <age>23</age>
      <image id="1">http://example.com/images/img1.jpg</image>
      <image id="2">http://example.com/images/img2.jpg</image>
      <image id="3">http://example.com/images/img3.jpg</image>
      <image id="4">http://example.com/images/img4.jpg</image>
      <image id="5">http://example.com/images/img5.jpg</image>
    </user>
    
    <user internal-id="24323423423">
      <name>Daniel</name>
      <age>31</age>
      <image id="1">http://example.com/images/img1.jpg</image>
      <image id="2">http://example.com/images/img2.jpg</image>
      <image id="3">http://example.com/images/img3.jpg</image>
      <image id="4">http://example.com/images/img4.jpg</image>
      <image id="5">http://example.com/images/img5.jpg</image>
    </user>
    </root>
    """
    
    if __name__ == '__main__':
        users: List[User] = []
        root = ET.fromstring(XML)
        for user in root:
            user_data = tuple(tag.text for tag in user)
            users.append(
                User(
                    internal_id=user.get('internal-id'),
                    name=user_data[0],
                    age=user_data[1],
                    images=user_data[2:]
                )
            )

    Вывод

    [User(internal_id='1233232323', name='Alex', age='23', images=('example.com/images/img1.jpg', 'example.com/images/img2.jpg', 'example.com/images/img3.jpg', 'example.com/images/img4.jpg', 'example.com/images/img5.jpg')),
    User(internal_id='24323423423', name='Daniel', age='31', images=('example.com/images/img1.jpg', 'example.com/images/img2.jpg', 'example.com/images/img3.jpg', 'example.com/images/img4.jpg', 'example.com/images/img5.jpg'))]
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как лучше всего логгировать web приложение на Python?

    half-life
    Ник В @half-life
    https://www.elastic.co/elk-stack

    https://habr.com/ru/post/421819/ - если не можешь в английский.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как выучить PostgreSQL?

    half-life
    Ник В @half-life
    https://postgrespro.ru/education/courses/DEV1
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Можно сделать эту программу компактней?

    half-life
    Ник В @half-life
    Я бы добавил немножко устойчивости и уменьшил бы операции преобразования типов.
    spoiler
    if __name__ == '__main__':
        print('Здравствуйте, я робот который определят, какое сейчас время года по числу :)')
        try:
            date = int(input('Введите какое сейчас число: '))
        except ValueError:
            print('Ты ввёл не число. Ты убил меня.')
        else:
            if date <= 2:
                print('Сейчас на улице зима, сиди дома ;)')
            elif date <= 5:
                print('Ой весна иди делай фотки!')
            elif date <= 8:
                print('Везет тебе сейчас у тебя лето, а мне тут людям помогать, но мне даже это нравиться')
            elif date <= 11:
                print('Вот и осень подоспела, идти в школу, а мне тут сидеть')
            else:
                print('Сейчас зима и вроде грустно, но уже скоро 2020 год!')

    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как создать общую переменную в данном коде?

    half-life
    Ник В @half-life
    sarcasm
    Ну возможно переопределить метод __init__ у MyServer , не?
    /sarcasm
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Как понять что я гов*окодер?

    half-life
    Ник В @half-life
    https://www.govnokod.ru/
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Что делает указанная строка кода?

    half-life
    Ник В @half-life
    Вот, лови статью про распаковку в пайтоне.
    Возможно это даст тебе какое-то понимание и расширит твои знания.
    А может и нет. Кто тебя знает.
    https://tproger.ru/translations/asterisks-in-pytho...
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • С чего начать разработку игры по типу Кот Том для iOS?

    half-life
    Ник В @half-life
    https://developer.apple.com/documentation/
    https://developer.apple.com/design/human-interface...
    https://iswift.org/cookbook
    https://clean-swift.com/handbook/
    https://swiftbook.ru/
    https://habr.com/ru/company/badoo/blog/281162/
    https://www.youtube.com/channel/UCiyiEAeWUuuPj6tt_...
    https://www.youtube.com/channel/UCXlCPCsB09ftBA5bQ...
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как можно автоматизировать свой аккаунт телеграм без аккаунта бота?

    half-life
    Ник В @half-life
    Да, если умеешь в питон то берёшь вот эту либу и мутишь всё что твоей душеньке угодно.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Сервер + клиент на Python3, где ошибка?

    half-life
    Ник В @half-life
    Я только начинаю есличто)

    Начни с правильного оформления вопроса и использования тега code
    Ответ написан более трёх лет назад
    8 комментариев
    8 комментариев
  • Как отредактировать xml?

    half-life
    Ник В @half-life
    Самый обычный способ подскажите

    нормализация данных
    можно пару вариантов для python

    Можно. lxml
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как исправить ошибку File "..webdriver.py", line 81, in. __init__ desired_capabilities=desired_capabilities)?

    half-life
    Ник В @half-life
    Как-то так
    from functools import partial
    from pathlib import Path
    from platform import system
    
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    ROOT_DIR = Path(__file__).parents[0]
    
    if __name__ == '__main__':
        chrome_options = Options()
        chrome_options.add_argument('--headless')
        chrome_options.binary_location = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
        local_system = system()
        make_path = partial(Path.joinpath, ROOT_DIR, 'chrome_drivers')
        if local_system == 'Linux':
            driver_path = make_path('chromedriver_linux64')
        elif local_system == 'Darwin':
            driver_path = make_path('chromedriver_mac64')
        elif local_system == 'Windows':
            driver_path = make_path('chromedriver_win32.exe')
        else:
            raise RuntimeError('Unknown os system')
    
        driver = webdriver.Chrome(executable_path=str(driver_path), options=chrome_options)
        driver.get('https://www.google.com/')
        print(driver.title)
        driver.quit()



    Плюс всё то что тебе написал Pavel Denisov в комментах.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • Следующие →
Самые активные сегодня
  • vabka
    Василий Банников
    • 9 ответов
    • 0 вопросов
  • Drno
    • 9 ответов
    • 0 вопросов
  • SoreMix
    soremix
    • 7 ответов
    • 0 вопросов
  • Vindicar
    Vindicar
    • 4 ответа
    • 0 вопросов
  • telegram_value_maker
    Евгений
    • 4 ответа
    • 0 вопросов
  • Алексей Гончаров
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации