Как вывести первый элемент словаря python
Словарь (dictionary) в языке Python хранит коллекцию элементов, где каждый элемент имеет уникальный ключ и ассоциированое с ним некоторое значение.
Определение словаря имеет следующий синтаксис:
dictionary =
В фигурных скобках через запятую определяется последовательность элементов, где для каждого элемента сначала указывается ключ и через двоеточие его значение.
users =
В словаре users в качестве ключей используются числа, а в качестве значений — строки. То есть элемент с ключом 1 имеет значение «Tom», элемент с ключом 2 — значение «Bob» и т.д.
emails =
В словаре emails в качестве ключей используются строки — электронные адреса пользователей и в качестве значений тоже строки — имена пользователей.
Но необязательно ключи и строки должны быть однотипными. Они могу представлять разные типы:
objects =
Мы можем также вообще определить пустой словарь без элементов:
objects = <>
objects = dict()
Преобразование списков и кортежей в словарь
Несмотря на то, что словарь и список — непохожие по структуре типы, но тем не менее существует возможности для отдельных видов списков преобразования их в словарь с помощью встроенной функции dict() . Для этого список должен хранить набор вложенных списков. Каждый вложенный список должен состоять из двух элементов — при конвертации в словарь первый элемент станет ключом, а второй — значением:
users_list = [ [«+111123455», «Tom»], [«+384767557», «Bob»], [«+958758767», «Alice»] ] users_dict = dict(users_list) print(users_dict) #
Подобным образом можно преобразовать в словарь двухмерные кортежи, которые в свою очередь содержать кортежи из двух элементов:
users_tuple = ( ("+111123455", "Tom"), ("+384767557", "Bob"), ("+958758767", "Alice") ) users_dict = dict(users_tuple) print(users_dict)
Получение и изменение элементов
Для обращения к элементам словаря после его названия в квадратных скобках указывается ключ элемента:
dictionary[ключ]
Например, получим и изменим элементы в словаре:
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" ># получаем элемент с ключом "+11111111" print(users["+11111111"]) # Tom # установка значения элемента с ключом "+33333333" users["+33333333"] = "Bob Smith" print(users["+33333333"]) # Bob Smith
Если при установки значения элемента с таким ключом в словаре не окажется, то произойдет его добавление:
users["+4444444"] = "Sam"
Но если мы попробуем получить значение с ключом, которого нет в словаре, то Python сгенерирует ошибку KeyError:
user = users["+4444444"] # KeyError
И чтобы предупредить эту ситуацию перед обращением к элементу мы можем проверять наличие ключа в словаре с помощью выражения ключ in словарь . Если ключ имеется в словаре, то данное выражение возвращает True:
key = "+4444444" if key in users: user = users[key] print(user) else: print("Элемент не найден")
Также для получения элементов можно использовать метод get , который имеет две формы:
- get(key) : возвращает из словаря элемент с ключом key. Если элемента с таким ключом нет, то возвращает значение None
- get(key, default) : возвращает из словаря элемент с ключом key. Если элемента с таким ключом нет, то возвращает значение по умолчанию default
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >user1 = users.get("+55555555") print(user1) # Alice user2 = users.get("+33333333", "Unknown user") print(user2) # Bob user3 = users.get("+44444444", "Unknown user") print(user3) # Unknown user
Удаление
Для удаления элемента по ключу применяется оператор del :
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >del users[«+55555555»] print(users) #
Но стоит учитывать, что если подобного ключа не окажется в словаре, то будет выброшено исключение KeyError. Поэтому опять же перед удалением желательно проверять наличие элемента с данным ключом.
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >key = "+55555555" if key in users: del users[key] print(f"Элемент с ключом удален") else: print("Элемент не найден")
Другой способ удаления представляет метод pop() . Он имеет две формы:
- pop(key) : удаляет элемент по ключу key и возвращает удаленный элемент. Если элемент с данным ключом отсутствует, то генерируется исключение KeyError
- pop(key, default) : удаляет элемент по ключу key и возвращает удаленный элемент. Если элемент с данным ключом отсутствует, то возвращается значение default
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >key = "+55555555" user = users.pop(key) print(user) # Alice user = users.pop("+4444444", "Unknown user") print(user) # Unknown user
Если необходимо удалить все элементы, то в этом случае можно воспользоваться методом clear() :
users.clear()
Копирование и объединение словарей
Метод copy() копирует содержимое словаря, возвращая новый словарь:
users = students = users.copy() print(students) #
Метод update() объединяет два словаря:
users = users2 = users.update(users2) print(users) # print(users2) #
При этом словарь users2 остается без изменений. Изменяется только словарь users, в который добавляются элементы другого словаря. Но если необходимо, чтобы оба исходных словаря были без изменений, а результатом объединения был какой-то третий словарь, то можно предварительно скопировать один словарь в другой:
users3 = users.copy() users3.update(users2)
Перебор словаря
Для перебора словаря можно воспользоваться циклом for:
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >for key in users: print(f"Phone: User: ")
При переборе элементов мы получаем ключ текущего элемента и по нему можем получить сам элемент.
Другой способ перебора элементов представляет использование метода items() :
users = < "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" >for key, value in users.items(): print(f"Phone: User: ")
Метод items() возвращает набор кортежей. Каждый кортеж содержит ключ и значение элемента, которые при переборе мы тут же можем получить в переменные key и value.
Также существуют отдельно возможности перебора ключей и перебора значений. Для перебора ключей мы можем вызвать у словаря метод keys() :
for key in users.keys(): print(key)
Правда, этот способ перебора не имеет смысла, так как и без вызова метода keys() мы можем перебрать ключи, как было показано выше.
Для перебора только значений мы можем вызвать у словаря метод values() :
for value in users.values(): print(value)
Комплексные словари
Кроме простейших объектов типа чисел и строк словари также могут хранить и более сложные объекты — те же списки, кортежи или другие словари:
users = < "Tom": < "phone": "+971478745", "email": "tom12@gmail.com" >, "Bob": < "phone": "+876390444", "email": "bob@gmail.com", "skype": "bob123" >>
В данном случае значение каждого элемента словаря в свою очередь представляет отдельный словарь.
Для обращения к элементам вложенного словаря соответственно необходимо использовать два ключа:
old_email = users[«Tom»][«email»] users[«Tom»][«email»] = «supertom@gmail.com» print(users[«Tom»]) #
Но если мы попробуем получить значение по ключу, который отсутствует в словаре, Python сгенерирует исключение KeyError:
tom_skype = users["Tom"]["skype"] # KeyError
Чтобы избежать ошибки, можно проверять наличие ключа в словаре:
key = "skype" if key in users["Tom"]: print(users["Tom"]["skype"]) else: print("skype is not found")
Во всем остальном работа с комплексными и вложенными словарями аналогична работе с обычными словарями.
Как определить первый элемент словаря в словаре?
я понимаю, поэтому и спросил, как это еще можно сделать.
базу данных подключать неудобно. Нужно что-то типа словаря в питоне, что бы можно было изменить все данные в текстовом редакторе.
Сергей Горностаев @sergey-gornostaev Куратор тега Python
allias173, чтобы определиться со структурами данных, нужно понять логику работы программы. Как структура данных будет инициализироваться? Как часто и каким образом будет изменяться? Как будет обрабатываться? Зачем вам доступ к первому элементу? И т.д. и т.п.
allias173 @allias173 Автор вопроса
Сергей Горностаев, я пытаюсь сделать каталог для магазина. То есть в файле с настройками (я пытался со словарем сделать) вписываешь категорию, в которой еще один словарь с названием и ценой. Цена выписывается отдельно, так как нужно будет отправлять дополнительные сообщения, где нужно вставить переменную с ценой.
Изменяться она будет редко, но нужно сделать это как-то визуально, без команд и тд, что бы просто в текстовом редакторе можно было заменить значение и всё.
При запуске скрипта запускается цикл с количеством повторений len(a) и по очереди выписываются все категории то есть a[0], потом a[1] и тд.
Затем пользователь выбирает категорию, вписывая в консоль её номер. То есть вписывает в консоль 1, и выписываются все элементы a[0], то есть товар и его цена, потом так же выбирается товар (вводится его номер) и как бы оформляется покупка.
Мне нужно сделать саму эту систему товаров, то есть менять категории, добавлять новые товары, менять их цену и тд, и затем выводить их пользователю.Нормальную БД не получиться использовать, т.к. ею управлять будет другой человек, который в этом не разбирается и ему привычнее просто заменить в текстовом редакторе данные
Словари и их методы в Python
В краткой форме рассмотрим то, как устроены словари в языке Python, а также изучим некоторые методы для работы с ними. Чтение не займет больше 5 минут.
Что такое словарь
Словарь — неупорядоченная структура данных, которая позволяет хранить пары «ключ — значение». Вот пример словаря на Python:
dictionary =
Данный словарь использует строки в качестве ключей, однако ключом может являться в принципе любой неизменяемый тип данных. Значением же конкретного ключа может быть что угодно. Вот ещё один пример словаря, где ключами являются числа, а значениями — строки:
gender_dict =
Важное уточнение: если вы попробуете использовать изменяемый тип данных в качестве ключа, то получите ошибку:
dictionary =
Прим. перев. На самом деле проблема не с изменяемыми, а с нехэшируемыми типами данных, но обычно это одно и то же.
Получение данных из словаря
Для получения значения конкретного ключа используются квадратные скобки [] . Предположим, что в нашем словаре есть пара ‘марафон’: 26 .
# берём значение с ключом "марафон" dictionary['марафон']
Опять же, вы получите ошибку, если попытаетесь получить значение по несуществующему ключу. Для избежания подобных ошибок существуют методы, о которых мы сейчас поговорим.
Добавление и обновление ключей
Добавление новых пар в словарь происходит достаточно просто:
# Добавляем ключ "туфля" со значением "род обуви, закрывающей ногу не выше щиколотки" dictionary['туфля'] = 'род обуви, закрывающей ногу не выше щиколотки'
Обновление существующих значений происходит абсолютно также:
# Обновляем ключ "туфля" и присваиваем ему значение "хорошая туфля" dictionary['туфля'] = 'хорошая туфля'
Удаление ключей
Для удаления ключа и соответствующего значения из словаря можно использовать del
# Удаляем значение с ключом "противостоять" из словаря del dictionary['противостоять']
Методы
Словари в Python имеют множество различных полезных методов, которые помогут вам в работе с ними. Вот лишь некоторые из них:
Update
Метод update() пригодится, если нужно обновить несколько пар сразу. Метод принимает другой словарь в качестве аргумента.
# Добавляем две пары в словарь dictionary, используя метод update dictionary.update()
>>> dictionary
Если вас интересует, почему данные в словаре расположены не в том порядке, в котором они были внесены в него, то это потому что словари не упорядочены.
Get
# Допустим, у нас есть словарь story_count story_count =
Метод get() возвращает значение по указанному ключу. Если указанного ключа не существует, метод вернёт None .
# Ключ "двенадцать" существует и метод get в данном случае вернёт 12 story_count.get('двенадцать')
Метод можно использовать для проверки наличия ключей в словаре:
>>> story_count.get('два') None
Также можно указать значение по умолчанию, которое будет возвращено вместо None , если ключа в словаре не окажется:
# Метод вернёт 0 в случае, если данного ключа не существует story_count.get('два', 0)
Pop
Метод pop() удаляет ключ и возвращает соответствующее ему значение.
>>> story_count.pop('девяносто') 90 >>> story_count
Keys
Метод keys() возвращает коллекцию ключей в словаре.
>>> story_count.keys() ['сто', 'пять', 'двенадцать']
Values
Метод values() возвращает коллекцию значений в словаре.
>>> story_count.values() [100, 12, 5]
Items
Метод items() возвращает пары «ключ — значение».
>>> dictionary.items() [('персона', 'человек'), ('бежать', 'двигаться со скоростью'), ('туфля', 'род обуви, закрывающей ногу не выше щиколотки'), ('бежал', 'бежать в прошедшем времени'), ('марафон', 'гонка бегунов длиной около 26 миль'), ('туфли', 'туфля во множественном числе')]
Итерация через словарь
Вы можете провести итерацию по каждому ключу в словаре.
for key in story_count: print(key)
Очевидно, вместо story_count можно использовать story_count.keys() .
В примере кода ниже цикл for использует метод items() для получения пары «ключ — значение» на каждую итерацию.
>>> for key, value in dictionary.items(): print(key, value) ('персона', 'человек') ('бежать', 'двигаться со скоростью') ('туфля', 'род обуви, закрывающей ногу не выше щиколотки') ('бежал', 'бежать в прошедшем времени') ('марафон', 'гонка бегунов длиной около 26 миль') ('туфли', 'туфля во множественном числе')
О словаре и других типах данных Python можно почитать в нашей статье.
Следите за новыми постами по любимым темам
Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.
Как получить из словаря первый ключ
Получить ключ по значению словаря
Можно ли как нибудь Получить ключ по значению словаря? Причем вариант тупого перебора работает.
Как в индексаторе моей реализации «словаря» получить элемент словаря без перебора?
Пытался сдать лабу преподавателю, суть которой в открытом хешировании, создал свой словарь (класс.
Превратить первый список в набор ключей словаря, а второй список добавить к каждому ключу словаря в виде списка
Даны два списка с одинаковым количеством элементов. Создать новый словарь. Превратить первый список.
3255 / 2057 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
Morti3, какой элемент считается первым?
Регистрация: 17.01.2018
Сообщений: 14
У меня ключи — это string, первый элемент — это самый первый элемент (нулевой)
3255 / 2057 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
Сообщение было отмечено Morti3 как решение
Решение
Ну вот так напиши:
1 2 3
>>> d = {'foo': 1, 'bar': 2, 'baz': 3} >>> list(d)[0] 'foo'
Сообщение от Morti3
первый элемент — это самый первый элемент
Спасибо, кэп. Вопрос был к тому, что стоит задуматься, почему тебе вдруг стал важен порядок элементов в ассоциативном контейнере. Какая исходная задача?
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Определить ключ словаря по значению
Добрый день! Подскажите как определить ключ словаря по одному значению? d = a.
Составной ключ (для Словаря)
Люди, здравствуйте. Вот, есть такая задача: доставать из БД записи таблицы с 4 полями. Три из.
Создание словаря ключ — значение на C
Здравствуйте! Нужно создать структуру словарь типа ключ — значение на языке C. С возможностью.
Ключ для бинарного дерева-словаря
Задание: описать класс, реализующий бинарное дерево, обладающее возможностью добавления новых.
Объединение параметров под один ключ словаря
Имеются результаты итерации в виде ‘объект — характеристика’ Как получить словарь.
Как получить значение из вложенного словаря
Добрый день, подскажите, пожалуйста, как получить значение по ключу из вложенного словаря.