Задать вопрос
  • Как добавить новую пару в существующий словарь Python?

    @yonshou Автор вопроса
    yonshou, Всё, нашёл решение!
    if prodArticle in productDict:
    	productDict[prodArticle].update({attrName: attrValue})
    else:
    	productDict[prodArticle] = {attrName: attrValue}


    Теперь оно прекрасно добавляет несуществующее пары, и на ключ изначально не ругается потому что мы делаем проверку на наличие этого ключа в словаре, если его нет - создаём его, если есть - обновляем его значения.
    Написано
  • Как добавить новую пару в существующий словарь Python?

    @yonshou Автор вопроса
    Алан Гибизов, подскажите пожалуйста, как добавлять новые пары для вложенного словаря по типу
    productDict[prodArticle].update({attrName: attrValue})


    выдаёт ошибку KeyError: '99-00013933', где '99-00013933' - это артикул товара. Почему Питон не может воспринимать это как новый ключ и обновить его вложенный словарь?
    Метод update() работает только со словарём или же и с ключами этого словаря?

    Почему при следующей конструкции значения вложенного словаря заменяются вместо добавления, если переменные attrName и attrValue динамические, и должны служить именами новыйх пар, а не заменять существующие
    productDict[prodArticle] = {
    attrName: attrValue
    }
    Написано
  • Как добавить новую пару в существующий словарь Python?

    @yonshou Автор вопроса
    Алан Гибизов,
    spoiler

    import csv
    import unicodecsv as csv
    import requests
    from bs4 import BeautifulSoup
    import os, sys
    
    requests.packages.urllib3.disable_warnings()
    
    PATH = os.path.abspath(os.path.dirname(sys.argv[0])) + '\\'
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
    subCatUrl = "https://viatec.ua/catalog/pribori-nichnogo-bachennia"
    
    productDict = dict()
    
    response = requests.get(subCatUrl, headers=headers, verify=False)
    html = response.text
    soup = BeautifulSoup(html, "html.parser")
    
    checkBoxUrls = soup.find_all("input", class_="filter-main__element-checkbox")
    checkBoxUrlsList = []
    
    for checkBoxUrl in checkBoxUrls:
    	checkBoxUrl = checkBoxUrl.get("data-href")
    	if checkBoxUrl != subCatUrl + "/0:0":
    		checkBoxUrlsList.append(checkBoxUrl)
    
    productDict = dict()
    
    for checkBoxUrl in checkBoxUrlsList:
    	response = requests.get(checkBoxUrl, headers=headers, verify=False)
    	html = response.text
    	soup = BeautifulSoup(html, "html.parser")
    
    	attrName = soup.find("span", class_="filter__label").text
    	attrValue = soup.find("span", class_="filter__delete-text").text
    
    	prodItemUrlsList = []
    
    	if soup.find_all("a", class_="paggination__page"):
    		paggNums = soup.find_all("a", class_="paggination__page")
    		paggPageList = []
    		for paggNum in paggNums:
    			paggNum = paggNum.text
    			paggPageList.append(checkBoxUrl + ";page:" + paggNum)
    
    		for paggPage in paggPageList:
    			response = requests.get(paggPage, headers=headers, verify=False)
    			html = response.text
    			soup = BeautifulSoup(html, "html.parser")
    
    			prodArticles = soup.find_all("p", class_="categories__item-code")
    
    			for prodArticle in prodArticles:
    				prodArticle = prodArticle.text
    				productDict[prodArticle][attrName] = attrValue
    
    	else:
    
    		prodArticles = soup.find_all("p", class_="categories__item-code")
    
    		for prodArticle in prodArticles:
    			prodArticle = prodArticle.text
    			productDict[prodArticle][attrName] = attrValue
    
    	print(productDict)



    Ошибка
    spoiler

    Traceback (most recent call last):
    File "1.py", line 64, in
    productDict[prodArticle][attrName] = attrValue
    KeyError: '99-00013933'
    [Finished in 1.7s]
    Написано
  • Как добавить новую пару в существующий словарь Python?

    @yonshou Автор вопроса
    Работает отлично, спасибо! Только работает с одномерным словарём, а мне нужно обновлять значения во вложенном словаре

    my_dict[article].update({attrName: attrValue}) - где переменная article изменяется в цикле, и при такой конструкции выдаёт ошибку KeyError, типа не находит такого ключа, если я его обьявляю за ранее my_dict[article] = {}, ошибка пропадает, но каждый раз затирает старые значения. По тому как я изучал словари в Питоне, я помню главный принцип... Если ключа не существует, должен создаться новый ключ, а при существующем - обновить значения того ключа... но на практике что то не выходит
    Написано
  • Как добавить кнопку загрузки файла в форме TinyMCE?

    @yonshou Автор вопроса
    Если можно, по подробнее пожалуйста...
  • Woocommerce как заменять ссылку кнопки относительно категории выбранного товара?

    @yonshou Автор вопроса
    Макс, если будет интересно... нашёл простой способ такое реализовать:
    global $product;
    $my_var = wc_get_product($product);
    $product_cat_id = $my_var->get_category_ids()[0];
    if ( $product_cat_id == 16 ) {
        $size_tab_link = '<a target="_blank" href="ссылка1">текст1</a>;
    }
    
    if ( $product_cat_id == 17 ) {
        $size_tab_link = '<a target="_blank" href="ссылка2">текст2</a>;
    }
    
    и т.д.
    
    а потом просто вывод:
    <div class="size-grid-product"><?php echo $size_tab_link ?></div>


    Примитивно конечно, но за то работает.
  • Woocommerce как заменять ссылку кнопки относительно категории выбранного товара?

    @yonshou Автор вопроса
    Макс, Товар вариативный, но отталкиваться нужно от категории.
    Изображения добавлены в библиотеку Wordpress и есть ссылки на них.
    Я думал реализовать код с условием, типа:
    Если Категория текущего товара такова, то ссылка кнопки будет такая...
    И так несколько условий
  • Woocommerce как привязать атрибуты к категориям товаров?

    @yonshou Автор вопроса
    Понял, сейчас попробуем. Спасибо!