Как вывести словарь без скобок python
Перейти к содержимому

Как вывести словарь без скобок python

  • автор:

Добавление в словарь списка без скобок

Всем привет. Подскажите, пожалуйста, как я могу добавить в словарь ссылки на картинки без [], чтобы в дальнейшем загрузить все товары с картинками на сайт Вот сам код:

import requests #import json from bs4 import BeautifulSoup import csv import re HOST = "САЙТ" CSV = 'parsing.csv' def get_html(url): #берём html стрраницы, которую будем парсить r= requests.get(url) return r def get_url_site(url_category): #Получаем линки сайд бара soup = BeautifulSoup(url_category, 'html.parser') categorys = soup.find_all('dt') urls = [] for item in categorys: if item.find('a').get('href') == None: continue else: urls.append(HOST + item.find('a').get('href')) return urls def get_url_tovar(url_tovar): # Получаем линки товара настранице soup = BeautifulSoup(url_tovar, 'html.parser') tovar = soup.find_all('h4', class_='item-title') urls = [] for item in tovar: if item.find('a').get('href') == None: continue else: urls.append(HOST + item.find('a').get('href')) return urls def get_pagination(url_tovar_pagin): # получаем количество страниц soup = BeautifulSoup(url_tovar_pagin, 'html.parser') PAGINATION = soup.find('div', class_='pagination') if PAGINATION == None: pass else: PAGINATION = soup.find('div', class_='pagination').find_all(string=['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19']) for item in PAGINATION: if item.find('a') == None: continue else: return PAGINATION def get_all_tovar(): # получаем линк со всех товаров сайта URL_sidebar = get_url_site(get_html(HOST).text) tovar_url = [] for i in range(1): #len(URL_sidebar) URL_tovar = get_url_tovar(get_html(URL_sidebar[i]).text) num_pagination = get_pagination(get_html(URL_sidebar[i]).text) if num_pagination != None: for item_pagination in range(len(num_pagination)): URL_tovar_1 = get_html(URL_sidebar[i]+"/"+num_pagination[item_pagination]) for b in range (len(get_url_tovar(URL_tovar_1.text))): tovar_url.append(get_url_tovar(URL_tovar_1.text)[b]) else: for c in range (len(URL_tovar)): tovar_url.append(URL_tovar[c]) return tovar_url #print (URL_tovar, num_pagination) get_all_tovar() def save_doc(items, path): with open(path, 'w', newline='') as file: writer = csv.writer(file, delimiter=';') writer.writerow(['название', 'цена', 'картинка', 'Описание'])#заголовки for item in items: writer.writerow( [item['title'], item['price'], item['img'], item['text']])#заголовки def parss(): tovar = [] for a in range(len(get_all_tovar())): connect = get_html(get_all_tovar()[a]).text soup = BeautifulSoup(connect, 'html.parser') tovar_pars = soup.find_all('div', class_='jbzoo') tovar_link = [] for b in tovar_pars: if b.find('h2', class_='element-itemname') == None: continue else: for link in b.find('div', class_='rborder').find_all('a', class_='jbimage-link'): tovar_link.append (HOST+link.get('href')) tovar.append( < 'title':b.find('h2', class_='element-itemname').get_text(), 'price':b.find('span', class_='price-value').get_text(), 'img':tovar_link, 'text':b.find('div', class_='element-textarea').get_text(strip=True), >) save_doc(tovar,CSV) print(tovar, len(tovar)) parss() 

Вывод словарь списков без скобок, как это сделать?

SoreMix

У вас получатся так что от знака : Стоит пробел с 2 сторон а надо что бы получилось без пробела т.е
Вот что получается
Вика : 2 0 0 2 0
Даня : 2 1 0 1 3
Лиза : 2 2 0 0 6
А надо
Вика:2 0 0 2 0
Даня:2 1 0 1 3
Лиза:2 2 0 0 6

SoreMix

soremix @SoreMix Куратор тега Python

EvanGun,
ну выведите без пробела

Вызов значений из словаря Python: методы .get() и .setdefault() вместо квадратных скобок

Вы всё ещё пользуетесь квадратными скобками? Тогда мы идём к вам.

Dana Moskvina / Skillbox Media

Цокто Жигмытов

Цокто Жигмытов

Кандидат философских наук, специалист по математическому моделированию. Пишет про Data Science, AI и программирование на Python.

Словарь в Python — это набор из пар «ключ: значение». Основные его свойства:

  • В каждой паре ключ (key) указывает на значение (value).
  • Ключи уникальны, повторов нет. Значения могут быть одинаковыми.
  • В отличие от списка или кортежа, словарь не упорядочен, то есть нельзя указать, какая пара в нём идёт первой, а какая последней.

Ключ от значения отделяется двоеточием, а пары разделяются запятыми. Весь словарь заключён в фигурные скобки <>.

Обычный (не слишком хороший) способ

Первый способ, который узнают начинающие питонисты, — это вызов значений с помощью квадратных скобок. Пишется имя словаря, а за ним в квадратных скобках идёт ключ. Если Python находит такой ключ в словаре, то возвращает соответствующее ему значение.

author = < "first_name": "Виктор", "last_name": "Пелевин", "username": "dao1962" > author['username'] >>> 'dao1962' author['age'] >>> Traceback (most recent call last): File "", line 1, in module> author['age'] KeyError: 'age'

Если же такого ключа нет, то вернётся исключение KeyError. И это, надо сказать, довольно неприятно, особенно в случае с объёмными и часто изменяющимися данными.

Путей решения этой проблемы несколько:

  • Использовать конструкцию try / except (схожую с условным оператором if / else), которая будет обрабатывать KeyError и возвращать не само исключение, а что-то более удобное для работы — например, сообщение.
try: author['age'] except KeyError: print('Такого ключа нет') >>> 'Такого ключа нет'
  • Использовать встроенную библиотеку collections, а конкретно структуру defaultdict из неё — расширение над обычным словарём, позволяющее устанавливать значения по умолчанию для запрошенных несуществующих ключей.

Но есть и третий способ, даже два. Словарь в Python поддерживает встроенные методы вызова значения .get() и .setdefault(), которые позволяют обойтись без обработки исключений и импорта библиотек. Их мы и рассмотрим.

Вызов с помощью .get()

Пожалуй, самый безопасный способ вызова значений из словаря. У него два параметра:

  • Первый (обязательный) — ключ, значение которого мы хотим вызвать.
  • Второй (опциональный) — значение, которое вернёт метод, если ключа в словаре не существует. По умолчанию оно равно None — его метод и вернёт.
author.get('first_name') >>> 'Виктор' author.get('age') # ничего не происходит print(author.get('age')) # поэтому используем print >>> None author.get('age', 'Такого ключа в словаре нет') >>> 'Такого ключа в словаре нет'

Если ключ в словаре существует, то вызов .get() ничем не отличается от вызова с помощью квадратных скобок. Если же ключа нет, то метод возвращает второй параметр — либо None, либо, например, строку с сообщением.

И не надо обрабатывать ошибки и исключения.

Вызов с помощью .setdefault()

Иногда может понадобиться не только защита от ошибки KeyError, но и исправление самого словаря. Для этого применяется метод .setdefault(), который по синтаксису и выводу похож на .get() и принимает те же два параметра: вызываемый ключ и его значение по умолчанию.

Обнаружив, что вызываемого ключа не существует, метод .setdefault():

  • сам создаёт ключ;
  • создаёт к нему в пару значение, заданное вами (по умолчанию — None);
  • добавляет получившуюся пару в словарь;
  • возвращает значение.

Если вы не указали второй параметр, он вернёт None, то есть ничего.

author.setdefault('middle_name') # None - значит ничего author # добавился ключ 'middle_name' со значением None >>> < 'first_name': 'Виктор', 'last_name': 'Пелевин', 'username': 'dao1962', 'middle_name': None, > author.setdefault('book', 'Омон Ра') >>> 'Омон Ра' author >>> < 'first_name': 'Виктор', 'last_name': 'Пелевин', 'username': 'dao1962', 'middle_name': None, 'book': 'Омон Ра', >

Обратите внимание, что этот метод не меняет значения у существующих ключей.

Как вывести словарь без скобок python

Питоновский словарь аналогичен HashMap в Java и Object в JavaScript.

Как создать словарь в Python: 6 способов

Пустой словарь создается с помощью фигурных скобок или функции dict():

info_dict = <> my_dict = dict() 

Словари с данными, как и в случае со списками, можно создавать несколькими способами.

Способ 1: Перечисление ключей и значений

Данные словаря перечисляются в виде пар ключ: значение через запятую и заключаются в фигурные скобки:

Способ 2: Создание словаря с помощью dict()

При использовании этого метода ключи и значения тоже придется определить вручную:

>>> my_dict = dict(name = 'Евгений', age = 28, position = 'Java-разработчик') >>> print(my_dict)

Способ 3: Создание словаря с помощью zip() и dict()

Если есть два списка, в одном из которых хранятся ключи, а в другом – значения, словарь можно создать при помощи zip() и dict():

>>> keys = ['цвет', 'размер', 'количество', 'цена'] >>> values = ['синий', '35х45х60', 5, 2500] >>> info = dict(zip(keys, values)) >>> print(info)

Способ 4: Создание словаря из списка кортежей и кортежа списков

Если имеется список кортежей, в которых первый элемент служит ключом, а второй – значением, словарь можно сформировать с помощью dict():

>>> item = [('модель', 'Aura'), ('цвет', 'пурпурный'), ('наличие', 'на складе')] >>> item_dict = dict(item) >>> print(item_dict)

Точно так же этот подход работает с кортежeм списков:

>>> employee= (['имя', 'Никита'], ['отчество', 'Сергеевич'], ['фамилия', 'Колобков'], ['возраст', 32]) >>> empl_dict = dict(employee) >>> print(empl_dict)

Способ 5: Метод fromkeys()

Если нужно создать словарь, у всех ключей которого – одинаковые значения, можно воспользоваться методом fromkeys():

>>> new_dict = dict.fromkeys(['север', 'юг', 'восток', 'запад'], 0) >>> print(new_dict)

Способ 6: Использование генератора словарей

Словари можно создавать на основе списков и строк. При этом одновременно можно проводить различные действия с числами и символами – математические операции, подсчет, сравнение и так далее:

>>> numbers = [2, 18, 5, 7, 2, 32, 6, 9, 4, 8, 9, 12, 14, 14] >>> my_dict = >>> print(my_dict)

В генераторах можно использовать преобразование типов данных и условия:

>>> st = '12 31 4 53 6 7 4 90 8 7 56 3 42' >>> my_dict = >>> print(my_dict)

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»

Особенности словарей

Начиная с Python 3.6, словари являются упорядоченными коллекциями – пары ключ: значение хранятся в словаре в порядке добавления. В отличие от строк и списков, словари не поддерживают срезы и конкатенацию, а к элементу словаря нельзя обратиться по индексу – в качестве индексов в словарях выступают ключи:

>>> my_dict = >>> print(my_dict['цвет'], my_dict[' количество ']) красный 53 кг 

Ключи в словаре не должны повторяться – если добавить в словарь ключ, идентичный существующему, Python сохранит только один ключ с последним значением:

>>> my_dict = >>> print(my_dict)

В качестве ключей можно использовать все типы данных, которые относятся к неизменяемым: int, float, Boolean (True/False), frozenset, строки, кортежи. Нельзя использовать списки, обычные множества set и словари, поскольку они являются изменяемыми. При этом в качестве значения в словарях можно использовать данные любого типа, включая словари – такие словари называются вложенными:

>>> hr_info = , 'сотрудник2': , 'сотрудник3': > >>> print(hr_info['сотрудник2']['должность']) DevOps 

Методы словарей в Python 3

Словари поддерживают некоторые методы, общие с другими типами данных, и имеют несколько своих собственных. Рассмотрим общие и уникальные методы на примерах.

Длина словаря и принадлежность элемента:

>>> my_dict = >>> print(len(my_dict)) 4 >>> print('есть на складе' if 'футболка' in my_dict else 'нет в наличии') нет в наличии 

Сумма ключей, максимальный и минимальный элементы

Функция sum() подсчитывает сумму ключей словаря и работает только в том случае, когда ключи являются числами:

>>> my_dict = >>> print(sum(my_dict)) 13 

Функции min() и max() работают для большинства типов данных:

>>> my_dict = >>> print(min(my_dict), max(my_dict)) количество цена >>> print(min(my_dict, key=len)) цена 

Объединение словарей

Словари можно объединять – если в них есть одинаковые ключи, в полученном словаре значение будет взято из последнего словаря:

>>> my_dict1 = >>> my_dict2 = >>> print(<**my_dict1, **my_dict2>)

Сравнение словарей

Словари считаются одинаковыми, если в них совпадают и ключи, и значения:

>>> my_dict = >>> my_dict2 = >>> print(my_dict == my_dict2) False 

Получение ключей, значений и элементов

Для работы с ключами используется метод keys(), со значениями – values(), с парами – items():

>>> my_dict = >>> print(my_dict.values()) dict_values(['чай', 100, 550, 256]) >>> print(my_dict.keys()) dict_keys(['напиток', 'вес', 'цена', 'количество']) >>> print(my_dict.items()) dict_items([('напиток', 'чай'), ('вес', 100), ('цена', 550), ('количество', 256)]) 

Добавление и изменение элементов

Для изменения значения какого-либо ключа используют оператор присваивания = :

>>> my_dict = >>> my_dict['имя'] = 'Евгений' >>> print(my_dict)

Если же такого ключа в словаре еще нет, новый элемент будет добавлен автоматически:

>>> my_dict = >>> my_dict['фамилия'] = 'Егоров' >>> print(my_dict)

Однако если обратиться к несуществующему элементу без присвоения ему значения, произойдет ошибка:

>>> my_dict = >>> print(my_dict['город']) Traceback (most recent call last): File "", line 1, in KeyError: 'город' 

Получение значения по ключу – get()

Чтобы избежать появления показанной выше ошибки, используют метод get(), которому можно передать значение по умолчанию – оно выведется, если такого ключа в словаре нет:

>>> my_dict = >>> print(my_dict.get('зарплата', 'не указана')) не указана 

Получение значения и/или добавление элемента с setdefault()

Другой метод для получения значения – setdefault(). Он действует двумя разными способами:

1) Если указанный ключ уже есть в словаре – возвращает его значение (даже при наличии значения по умолчанию):

>>> my_dict = >>> print(my_dict.setdefault('возраст', 'не указан')) 25 

2) Если ключа нет – вставляет элемент в словарь, возвращает значение:

>>> my_dict = >>> print(my_dict.setdefault('зарплата', 150000)) 150000 >>> print(my_dict)

Дополнение словаря

Элементы одного словаря можно «обновить», дополнить элементами другого. В случае совпадения ключей, как и при показанном ранее объединении словарей, сохраняются значения второго словаря:

>>> my_dict1 = >>> my_dict2 = >>> my_dict1.update(my_dict2) >>> print(my_dict1)

Удаление элементов словаря

Как и в случае со списками, удалять элементы из словарей можно несколькими способами:

del – удаляет элемент с заданным ключом:
>>> my_dict = >>> del my_dict['название'] >>> print(my_dict)

pop() – возвращает удаленное значение:

>>> my_dict = >>> фильм = my_dict.pop('название') >>> print(фильм) Зеленая миля 

popitem() – удаляет последний добавленный элемент и возвращает его ключ: значение в виде кортежа:

>>> my_dict = >>> movie = my_dict.popitem() >>> print(movie) ('название', 'Властелин колец') 

clear() – удаляет все элементы словаря:

>>> my_dict = >>> my_dict.clear() >>> print(my_dict) <> 

Создание копии словаря

Копия словаря создается тем же методом, что и в случае со списками – с помощью copy():

>>> my_dict = >>> new_dict = my_dict.copy() >>> print(new_dict)

Практика

Задание 1

Напишите программу, которая получает на вход две строки, и формирует из них словарь. Ключами служат слова из первой строки, значениями – целые числа из второй.

Пример ввода:

яблоки сливы груши персики манго киви апельсины 34 56 23 89 55 32 11 
keys = input().split() values = map(int, input().split()) my_dict = dict(zip(keys, values)) print(my_dict) 

Задание 2

Напишите программу, которая получает на вход строку чисел, разделенных пробелами, и формирует словарь, в котором ключами служат четные числа, а значениями – слово четное .

Пример ввода:

45 6 8 23 21 87 65 45 38 
nums = map(int, input().split()) my_dict = print(my_dict) 

Задание 3

Напишите программу, которая получает на вход строку и подсчитывает, сколько раз в ней встречается каждый символ (независимо от регистра). Результат нужно вывести без фигурных скобок.

Пример ввода:

Есть только один способ избежать критики: ничего не делайте, ничего не говорите и будьте никем. 
е-11 с-3 т-7 ь-4 -14 о-9 л-2 к-4 д-3 и-10 н-6 п-1 б-3 з-1 ж-1 а-2 р-2 :-1 ч-2 г-3 й-1 ,-1 в-1 у-1 м-1 .-1 
st = input().lower() my_dict = print(*[str(k) + '-' + str(v) for k, v in my_dict.items()]) 

Задание 4

Напишите программу, которая получает 2 слова на разных строках и определяет, являются ли эти слова анаграммами.

Пример ввода 1:

меч мяч 

Пример ввода 2:

Минотавр Норматив 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *