Dictionary (Словари)
Словарь (неупорядоченные коллекции из разных объектов с доступом по ключу) создаётся при помощи фигурных скобок, внутри которых указываются пары «ключ-значение» через запятые. Также можно создать пустой словарь и позже добавлять пары. В Python словарь определён в классе dict. Иногда используют термин ассоциативные массивы или хеш-таблицы.
catDictionary = emptyDictionary = <>
Другие варианты создания словарей.
С помощью функции dict():
dictionary = dict(short='dict', long='dictionary') print(dictionary) # numberDict = dict([(1, 3), (2, 9)]) print(numberDict) #
С помощью метода fromkeys():
noneDictionary = dict.fromkeys(['a', 'b']) print(noneDictionary) # fullDictionary = dict.fromkeys(['a', 'b'], 9) print(fullDictionary) #
И ключи и значения в одном словаре могут быть разных типов (строки, числа).
Ключи и значения могут выводиться в различном порядке, потому что словари, в отличие от списков, не упорядочены (не ранжированы). В словаре нет первого элемента, потому что нет какого-нибудь порядка расположения элементов.
Число пар в словаре можно получить через len.
print(len(catDictionary)) # 3
Доступ к значению можно получить через ключ, указанный в квадратных скобках. Если указать неправильный ключ, то вернётся ошибка.
print(catDictionary["key3"]) # Vaska
Также можно через метод get().
val = catDictionary.get("key2") print(val) # Murzik
При не существующем ключе можно вернуть собственное сообщение.
val = catDictionary.get("key5", "That key is not found") print(val)
Проверить, есть ли проверяемый ключ в словаре можно через оператор in. В успешном случае возвращается True или 1, в противном случае возвращается False или 0.
print("key4" in catDictionary) # 0 print("key1" in catDictionary) # True
Получить все ключи можно через keys(). Метод возвращает значение типа dict_keys.
keys = catDictionary.keys() print(list(keys))
Получить все значения ключей можно через values(). Метод возвращает значение типа dict_values.
values = catDictionary.values() print(list(values)) # ['Murzik', 'Vaska', 'Barsik']
Получить все ключи со значениями можно через items().
items = catDictionary.items() print(items) # dict_items([('key2', 'Murzik'), ('key3', 'Vaska'), ('key1', 'Barsik')])
Чтобы обновить значение в словаре, нужно указать ключ и новое значение.
catDictionary["key1"] = "Ryzhik"
По такому же принципу можно добавить новый ключ со значением.
catDictionary["key4"] = "Murka"
Удалить элемент (ключ-значение) можно через оператор del. Также можно удалить весь словарь.
del catDictionary["key4"] del catDictionary
Если мы не хотим удалять сам словарь, а только очистить его от элементов, то воспользуемся методом clear().
catDictionary.clear() print(catDictionary) # <>
Выражение favorites1 == favorites2 истинно потому, что словари не упорядочены и считаются эквивалентными, если состоят из одинаковых пар ключ-значение.
Списки с одинаковыми значениями элементов, но разным порядком их следования, равны не будут.
favorites1 = favorites2 = favorites1 == favorites2 # True
Словари и их методы в 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 можно почитать в нашей статье.
Как вывести значение словаря, преобразовав его из списка в строку?
Нужно пробежаться по value , применить к каждому элементу str() , а потом объединить полученные строки с помощью join с нужным разделителем:
for key, value in d.items(): print(key, ':', ', '.join(str(num) for num in value), sep='')
Отслеживать
ответ дан 27 мар 2016 в 4:12
47.8k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
1- можно ‘, ‘.join(map(str, list_value)) использовать вместо ‘, ‘.join(str(num) for num in list_value) 2- можно явное форматирование использовать: print(‘<>:<>‘.format(name, ‘, ‘.join(map(str, list_value))))
27 мар 2016 в 16:50
Если value — это список int-чисел, то можно просто срезать первый и последний символы после преобразования списка в строку: str(value)[1:-1]
Отслеживать
ответ дан 27 мар 2016 в 13:11
Dinar Gataullin Dinar Gataullin
91 5 5 бронзовых знаков
Можно, но если будет, например, список имен [‘Коля’, ‘Вася’, ‘Петя’] , то при выводе они так и будут в кавычках. Но для чисел работать будет.
27 мар 2016 в 14:09
лучше так не делать, т.к. str(list) вызывает repr(item) для каждого элемента, а не str(item) .
27 мар 2016 в 16:49
Вывод Значений в одну строку:
friends = print("Вот в каких городах живут мои друзья: "+', '.join(friends.values()))
Вот в каких городах живут мои друзья: Омск, Москва, Челябинск, Лондон, Вятка
Отслеживать
1,805 3 3 золотых знака 13 13 серебряных знаков 27 27 бронзовых знаков
ответ дан 11 апр 2020 в 15:19
Игорь Сорочинский Игорь Сорочинский
Ресультат, который ожидает ТС, и ваш не совпадают. Внимательно ли вы прочитали вопрос?
11 апр 2020 в 15:41
- python
- python-3.x
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Получение списка значений из словаря в Python
Словари в Python — это очень мощный инструмент для хранения и работы с данными. Они представляют собой структуры данных, которые содержат пары «ключ-значение».
Алексей Кодов
Автор статьи
7 июля 2023 в 18:09
Словари в Python — это очень мощный инструмент для хранения и работы с данными. Они представляют собой структуры данных, которые содержат пары «ключ-значение». Например, можно иметь словарь, который содержит имена студентов и их оценки:
grades =
В этом случае, ключами являются имена студентов, а значениями — их оценки.
Иногда возникает необходимость получить список всех значений из словаря. В Python это можно сделать очень просто с помощью встроенного метода values() .
Использование метода values()
Метод values() возвращает объект dict_values , который является представлением всех значений словаря. Вот как это работает:
grades = < "Alice": 85, "Bob": 90, "Charlie": 92 >print(grades.values())
В результате выполнения этого кода будет выведено:
dict_values([85, 90, 92])
Преобразование в список
Объект dict_values , возвращаемый методом values() , можно легко преобразовать в список с помощью функции list() . Вот как это можно сделать:
grades = < "Alice": 85, "Bob": 90, "Charlie": 92 >values_list = list(grades.values()) print(values_list)
Этот код выведет:
[85, 90, 92]
Таким образом, получить список значений из словаря в Python — задача простая и быстрая.
