Вывод словаря без дополнительных знаков
Есть ли возможность вывести весь словарь без дополнительных симолов (без запятых, кадратных и фигурных скобок) прямо из переменной, не прибегая к итерации? Также важно не задеть данные в самом словаре, например, ссылки, цифры и т.д. При помощи парсинга с сайта по номеру варианта, в словарь заносятся некоторые ответы на решение примеров. Например, спарсив номера, я имею словарь
data = >>
а нужно вывести это вот так:
>>> data a: 2 b: x: 3 y: t1: 4 t2: 5
Отслеживать
12.5k 7 7 золотых знаков 18 18 серебряных знаков 48 48 бронзовых знаков
задан 22 янв 2020 в 13:51
27 6 6 бронзовых знаков
Не прибегая к итерации — никак
22 янв 2020 в 13:52
Что Вы имели в виду под «не прибегая к итерации»? Нельзя использовать циклы? Это довольно странное условие, зачем Вам это?
22 янв 2020 в 14:04
@nomnoms12 Такая необходимость нужна чтобы все данные были отправлены пользователю в одном сообщении при помощи VK API
22 янв 2020 в 14:10
В таком случае, вы, похоже, какое-то очень странное значение вкладываете во фразу «не прибегая к итерации».
22 янв 2020 в 14:16
Похоже, здесь проблема XY. Можете объяснить подробно, что вам нужно сделать и почему вам нельзя использовать итерацию?
Вывод элементов множества без фигурных скобок
Привет всем!
При решении одной задачи возник вопрос — а как, собственно, вывести элементы множества без фигурных скобок? Можно звездочку добавить, а без нее как?
Например в этом коде:
1 2 3
A = [1,2,3,4,5] B = [3,4,1,5] print(set(A) - set(B))
необходимо вывести 2(integer).
Спасибо за помощь!
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Сгенерировать GUID код без фигурных скобок
Мне надо в XML запихнуть сгенерированный GUID типа GUID="8867f906-9a9b-4f33-88dc-77d54c2cf9a3" .
Определить, входит ли лента GUID с фигурными или без фигурных скобок
Здравствуйте, столкнулся с проблемой. Такое вот задание: написать регулярное выражение, которое.
Теряются значения элементов вне фигурных скобок
Всем доброго времени суток! Написал программу для замены минимального и максимального элементов.
Экранирование фигурных скобок
Нужно с помощью регулярных выражений определить, соответствует ли введенная строка шаблону GUID.
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от 7esoterik7 
вывести элементы множества без фигурных скобок?
Если вам нужны элементы контейнера, а не сам контейнер — распакуйте контейнер звездочкой.
А сам контейнер — никак (если не придумывать всякой ерунды с заменой). Все контейнеры в python выводятся в виде строковой репрезентации пригодной для eval. Иной вариант просто никому не нужен.
P.S. Естественно, что помимо звездочки это можно сделать и бесполезным циклом:
for i in set([1,2,3]):print(i,end=' ')
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9

Сообщение было отмечено 7esoterik7 как решение
Решение
Сообщение от Garry Galler 
Этот вариант оставит лишний пробел в конце.
Можно аккуратно сджойнить:
1 2 3 4
A = [1,2,3,4,5] B = [3,4,1,5] r = set(A) - set(B) print(' '.join(map(str, r)))
Добавлено через 1 минуту
Хотя распаковка контейнера звёздочкой проще.
print(*r)
Регистрация: 26.11.2018
Сообщений: 82
Сообщение от Рыжий Лис 
Хотя распаковка контейнера звёздочкой проще.
Я не знаю почему, но на Codewars звездочка не работает
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от 7esoterik7 
но на Codewars звездочка не работает
1 2 3 4
def test(): return range(5) print(*test())
0 1 2 3 4
Регистрация: 26.11.2018
Сообщений: 82
Сообщение от Garry Galler 
Сообщение от 7esoterik7
но на Codewars звездочка не работает
Работает.
PythonВыделить код
1
2
3
4
def test():
* * return range(5)
print(*test())
Код
0 1 2 3 4
Garry Galler, вы не поняли. На вот этом сайте https://www.codewars.com при проверке задачи звездочка не работает, а при этом идентичный код в PyCharm проходит.
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от 7esoterik7 
вы не поняли.
Понял. Я это код там и запускал.
Регистрация: 26.11.2018
Сообщений: 82
Сообщение от Garry Galler 
Понял. Я это код там и запускал.
Garry Galler, разобрался. Я так понял указание звездочки в теле функции после return недопустимо.
А вот в функции print() возможно. Почему так?
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от 7esoterik7 
Почему так?
return может вернуть только один элемент. А звездочка, распаковав контейнер, превратит его в несколько элементов.
Таким образом налицо нарушение синтаксиса.
Регистрация: 26.11.2018
Сообщений: 82
Теперь прояснилось! Спасибо вам!
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
Сообщение от Garry Galler 
return может вернуть только один элемент.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
def f(): ls = [1, 2, 3] return tuple(ls) print(f()) def f2(): return 1, 2, 3 print(f2()) r1, r2, r3 = f2() print(r1, r2, r3)
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Рыжий Лис,
Кортеж это и есть один элемент\объект. То, что он составной — не важно. Для return он единственный и неповторимый.
Так что возврат нескольких элементов\значений из функции через кортеж — просто фокус, который придумали в Python.
P.S. Так и знал, что кто-то поспешно не согласится с очевидным.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Экранирование фигурных скобок
Столкнулся с такой проблемой: Пытаюсь разобрать текст из файла, а там есть фигурные скобки.

Вывод элементов списка без скобок и запятых в игре «Виселица»
Очень прошу!! Скажите как сделать чтобы угаданные буквы(маленький скрин 1) выводились без.

Отсутствие фигурных скобок в блоке if
Разве такое возможно? В 5 строчке if внутри скобок прописано условие а знаков обозначающих then

Допустимость порядка фигурных скобок
Здравствуйте, помогите пожалуйста написать код на языке C для этой задачи. 🙂 Условие: .

Допустим ли порядок фигурных скобок
Cоздайте функцию, которая принимает строку фигурных скобок и возвращает допустим ли порядок.
Баланс фигурных скобок в файле
Вообщем нужно прочитать текст (любая программа, в файле name.txt) из файла и проверить баланс.
Как разобраться с принадлежностью фигурных скобок?
Учусь писать программы на Microsoft Visual Studio 2008 Express edition. Иногда бывает трудно.
Как вывести словарь без скобок 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:
Минотавр Норматив
Словари
В языке программирования Python словари (тип dict ) представляют собой еще одну разновидность структур данных наряду со списками и кортежами. Словарь — это изменяемый (как список) неупорядоченный (в отличие от строк, списков и кортежей) набор элементов «ключ:значение».
«Неупорядоченный» – значит, что последовательность расположения пар не важна, в следствие чего обращение к элементам по индексам невозможно.
В других языках структуры, схожие со словарями, называются по-другому. Например, в Java подобный тип данных называется отображением.
Чтобы представление о словаре стало более понятным, проведем аналогию с обычным словарем, например, англо-русским. На каждое английское слово в таком словаре есть русское слово-перевод: cat – кошка, dog – собака, table – стол и т. д. Если англо-русский словарь описать с помощью Python, то английские слова можно сделать ключами, а русские – их значениями:
{'cat': 'кошка', 'dog': 'собака', 'bird': 'птица'>
Обратите внимание, что для определения словаря используются фигурные скобки. Синтаксис словаря на Питоне описывается такой схемой:
В словаре доступ к значениям осуществляется не по индексам, а по ключам, которые заключаются в квадратные скобки (по аналогии с индексами списков):
>>> a['cat'] 'кошка' >>> a['bird'] 'птица'
Словари, как и списки, являются изменяемым типом данных: позволительно изменять, добавлять и удалять элементы (пары «ключ:значение»). Изначально словарь можно создать пустым (например, d = <> ) и потом заполнить его элементами. Добавление и изменение имеет одинаковый синтаксис: словарь[ключ] = значение . Ключ может быть как уже существующим (тогда происходит изменение значения), так и новым (происходит добавление элемента словаря). Удаление элемента осуществляется с помощью встроенной оператора del языка Python.
>>> a = <> >>> a[1] = 2.34 >>> a[2] = 4.88 >>> a >>> a[1] = 3.01 >>> a >>> del a[2] >>> a
В словаре не может быть двух элементов с одинаковыми ключами. Однако могут быть одинаковые значения у разных ключей.
Ключом может быть любой неизменяемый тип данных. Значением – любой тип данных. Значения словарей вполне могут быть структурами, например, другими словарями или списками.
>>> nums = >>> person1 = >>> person1['data'][0] 4
Перебор элементов словаря в цикле for
Элементы словаря перебираются в цикле for также, как элементы других сложных объектов. Однако «по-умолчанию» извлекаются только ключи:
>>> nums >>> for i in nums: . print(i) . 1 2 3
Но по ключам всегда можно получить значения:
>>> for i in nums: . print(nums[i]) . one two three
С другой стороны у словаря как класса есть метод items() , который создает особую структуру, состоящую из кортежей. Каждый кортеж включает ключ и значение:
>>> n = nums.items() >>> n dict_items([(1, 'one'), (2, 'two'), (3, 'three')])
В цикле for можно распаковывать кортежи, таким образом сразу извлекая как ключ, так и его значение:
>>> for key, value in nums.items(): . print(key, 'is', value) . 1 is one 2 is two 3 is three
Методы словаря keys() и values() позволяют получить отдельно перечни ключей и значений. Так что если, например, надо перебрать только значения или только ключи, лучше воспользоваться одним из этих методов:
>>> v_nums = [] >>> for v in nums.values(): . v_nums.append(v) . >>> v_nums ['one', 'two', 'three']
Методы словаря
Кроме рассмотренных выше трех методов items() , keys() и values() словари обладают еще восемью. Это методы clear() , copy() , fromkeys() , get() , pop() , popitem() , setdefault() , update() .
Метод clear() удаляет все элементы словаря, но не удаляет сам словарь. В итоге остается пустой словарь:
>>> nums >>> nums.clear() >>> nums <>
Словарь – это изменяемый тип данных. Следовательно, как и список он передается в функцию по ссылке. Поэтому иногда, чтобы избежать нежелательного изменения глобального словаря его копируют. Это делают и с другими целями.
>>> n1 = >>> n2 = n1 >>> n3 = n1.copy() >>> n2[‘c’] = 3 >>> n1 >>> n2 >>> n3
Метод fromkeys() позволяет создать словарь из списка, элементы которого становятся ключами. Применять метод можно как классу dict , так и к его объектам:
>>> a = [1, 2, 3] >>> c = dict.fromkeys(a) >>> c >>> d = dict.fromkeys(a, 10) >>> d
Метод get() позволяет получить элемент по его ключу:
>>> nums.get(1) 'one'
Метод pop() удаляет из словаря элемент по указанному ключу и возвращает значение удаленной пары. Метод popitem() не принимает аргумента, удаляет элемент по принципу «последним вошел, первым вышел» и возвращает его в программу в виде кортежа (ключ, значение) .
>>> nums = >>> nums.pop(1) ‘one’ >>> nums >>> nums.popitem() (3, ‘three’) >>> nums
С помощью setdefault() можно добавить элемент в словарь:
>>> nums.setdefault(4, ‘four’) ‘four’ >>> nums
Равносильно nums[4] = ‘four’ , если элемент с ключом 4 отсутствует в словаре. Если он уже есть, то nums[4] = ‘four’ перезапишет старое значение, setdefault() – нет.
С помощью update() можно добавить в словарь другой словарь:
>>> nums.update() >>> nums
Также метод обновляет значения существующих ключей. Включает еще ряд особенностей.
Практическая работа
- Создайте словарь, связав его с переменной school , и наполните данными, которые бы отражали количество учащихся в разных классах (1а, 1б, 2б, 6а, 7в и т. п.). Внесите изменения в словарь согласно следующему: а) в одном из классов изменилось количество учащихся, б) в школе появился новый класс, с) в школе был расформирован (удален) другой класс. Вычислите общее количество учащихся в школе.
- Напишите функцию, которая принимает один словарь, и возвращает другой, в котором ключами являются значения из первого словаря, а значениями – соответствующие им ключи. Создайте словарь, передайте его в функцию. Выведите на экран исходный и «перевернутый» словари.
Примеры решения и дополнительные уроки в pdf-версии курса
X Скрыть Наверх
Python. Введение в программирование
