Как вывести ключ словаря питон
Перейти к содержимому

Как вывести ключ словаря питон

  • автор:

Получить список ключей и значений словаря в Python

В этом посте мы обсудим, как получить список ключей и значений словаря в Python.

1. Использование конструктора списка

Стандартным решением для просмотра ключей словаря является использование dict.keys() функция. Чтобы преобразовать это представление в список, вы можете использовать конструктор списка, как показано ниже:

Вы также можете передать словарь конструктору списка, который является ярлыком для list(d.keys()) .

Точно так же, чтобы получить список значений словаря, вы можете передать представление, возвращаемое методом dict.values() в конструктор списка.

2. Использование итерируемого оператора распаковки

Начиная с Python 3.5, вы можете распаковать словарь в литерал списка, например [*d] . Этот синтаксис был предложен в PEP 448.

В качестве альтернативы вы можете позвонить в dict.keys() функция, чтобы сделать ваш код более явным.

Чтобы получить список значений словаря, вы можете вызвать метод dict.values() функция.

3. Использование расширенной итерируемой распаковки

Другим вариантом в Python 3 является расширенная итерируемая распаковка, которая была представлена как часть PEP 3132. Теперь вы можете написать *l, = dict , куда l — это пустой список, а справа — ваш словарь.

Чтобы получить список значений словаря, вы можете вызвать метод dict.values() функция с правой стороны.

Это все, что касается получения списка ключей и значений словаря в Python.

Оценить этот пост

Средний рейтинг 4.74 /5. Подсчет голосов: 23

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования ��

Как получить ключи от словаря в виде списка на Python

Как получить ключи от словаря в виде списка на Python

Получение представления о словарных ключах в виде последовательности является повседневным случаем использования в программировании на Python.

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

dict.keys() для получения ключей словаря Python

Функция dict.keys()
возвращает dict_keys — итерабельный вид ключей словаря.

Вы можете выполнить итерацию по dict_keys напрямую, без преобразования в список.
Для многих случаев использования, dict_keys может быть удален вместо списка в API, и это будет работать.

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

Обратите внимание, что вызов dict.keys() необязателен, если вы хотите получить ключи в виде списка.
Так как словари Python могут работать над ключами, вы можете передать a
сам словарь в конструктор списка.

Петли для получения ключей словаря Python

Особым свойством словарей на Python является то, что при итерации над ними,
ты повторяешь их ключи.
Таким образом, вы можете собрать все ключи словаря простым итерационным путем.

Список понятий для получения ключей Python Dictionary

Синтаксическим улучшением по сравнению с использованием циклов может быть использование Python’s list comprehesions.
С помощью list comprehensions вы можете конденсировать вышеописанный цикл в один лайнер.

Оператор распаковки * словаря Python для получения ключей

Начиная с Python 3.5, мы можем использовать оператор распаковка * , чтобы получить доступ к ключам словаря.
Эта возможность была введена с помощью PEP 448 — Дополнительные обобщения распаковки.

Положительной стороной этого подхода является то, что вы можете распаковывать ключи словарей в другие коллекции, помимо списков, например кортежи или сеты.

Сравнение производительности во время выполнения

Время исполнения каждого из вышеперечисленных подходов варьируется.

Как следует из приведенных выше таймингов, оператор распаковки * является самым быстрым.

Предпочитайте его, если только у вас нет веских причин отступать от любого из других подходов.

Словари¶

dict (от английского «dictionary», словарь) – еще один тип данных в Python. Словари хранят пары ключ : значение . То есть в списках можно достать элемент, если указать его позицию в виде целого числа, а в словарях – тот самый ключ . dict – тип данных, поэтому достать элемент по номеру не получится, но отображение содержимого будет элементов. ключей должна поддерживаться, чтобы всегда можно было быстро найти одно единственно верное значение .

В некоторых языках программирования можно встретить ассоциативные массивы – полную аналогию dict . Также вспомним базы данных, широко использующиеся во всём мире для хранения информации: в таблице можно установить первичный ключ, который уникально идентифицирует запись, как и ключ соответствует значению в словаре. Самый простой пример ключа — порядковый номер объекта!

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

Использовать словарь стоит, когда нужно сохранять объекты с какими-то ключами и обращаться к объектам по известным ключам. Один из способов определения словаря: указание пар ключ : значение через^запятую внутри фигурных скобок <> . Напоминает set , правда? <> позволяет создать пустой словарь, но не пустое множество.

Например, решили упростить себе жизнь и больше не запоминать дни рождения коллег. Вместо этого, лучше хранить их в одном месте:

В примере dates имеет две пары значений. В первой паре строка «Кунг Фьюри» является ключом, а «1968-09-09» – его значением.

Получение значения по ключу¶

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

Если указать неверный ключ в [] , Python будет ругаться: выбросит ошибку KeyError и перестанет выполнять код. Чуть ниже посмотрим, как можно избежать таких ситуаций.

Изменение и добавление значений¶

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

Если ключ уже был в словаре, значение по нему изменится на новое, а старое будет удалено. Указание нового ключа со значением добавляет пару в словарь.

Основные методы словаря¶

Проверка вхождения и get() ¶

Помните, ранее говорили, что обращение к несуществующему ключу приводит к ошибке? Пришло время посмотреть пару способов борьбы!

Можно проверить, есть ли интересующий ключ среди множества ключей словаря. Это делается при помощи бинарного оператора in . Слева должен быть указан ключ, справа – переменная со словарем:

В коде проверку можно использовать в условной конструкции if , чтобы принимать решение в зависимости от наличия ключа:

Теперь о методе get() : при помощи его тоже можно получать значения из словаря по ключу. KeyError никогда не появится: если ключа нет, по умолчанию возвращается None :

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

Что такое «длина словаря»?¶

Функция len() для словаря будет возвращать количество пар ключ : значение (их столько же, сколько ключей), которое в нём содержится:

Удаление из словаря¶

Есть несколько способов очистки в словаре: можно убирать по ключу, а можно сразу удалить все!

при помощи инструкции del (от английского «delete») можно удалить пару ключ : значение (удаление ключа эквивалентно удалению пары ключ : значение , так как теряем возможность найти то самое значение ), в общем виде:

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

pop() — метод, который достает значение, хранящееся по переданному ключу, и сразу удаляет ключ из словаря:

Для метода pop() есть возможность указать значение, которое будет возвращено при обращении к несуществующему ключу. Почти как get() , но всё-таки, без указания этого значения, pop() выбрасывает KeyError .

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

clear() позволяет удалить сразу все ключи словаря, то есть полностью его очистить:

Обратите внимание на то, как работают методы pop() , popitem() и clear() : как только вызываются, словарь меняет свой состав (изменения происходят in place, то изменить по месту без копирования).

Обновление и добавление ключей¶

Лицезрели, что значения в словарь можно добавлять или менять, обращаясь по ключу. Python предоставляет возможность не писать кучу присваиваний, а использовать лаконичный метод update() , который на вход может принимать либо другой словарь, либо пары ключ : значение в какой-то последовательности (например, кортежи по два значения в списке: первое – ключ, второе – значение)

А что, если в update() передать пары, ключ которых уже был в словаре? Значения по дублирующимся ключам будут на новые:

Доступ к ключам и значениям¶

В Python можно без проблем извлекать отдельно по ключам или значениям, а также итерироваться по элементам словарей в цикле for . Осталось разобраться, как это работает.

Ключи¶

По умолчанию, в конструкциях вида

переменные цикла (тут – key ) будут принимать значения из множества словаря. Аналогично можно использовать метод keys() (позволяет достать все ключи), который явно говорит, что цикл идет по ключам, например:

Значения¶

При помощи метода values() можно получить все значения, хранящиеся по всем ключам словаря:

Напрямую по значению получить ключ нельзя.

Всё и сразу¶

Существует метод items() , который достает пары ключ : значение в виде последовательности кортежей. Его же часто удобно использовать в циклах, дабы не тащить длинную запись в виде названия словаря и квадратных скобок с ключом при обращении к значению:

Сортировка¶

Функция sorted() доступна и для словарей. По умолчанию ключи словаря поддерживают порядок, в котором были добавлены, но можно отсортировать их в нужном направлении (в зависимости от типа):

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

Можно ли отсортировать словарь по значениям?

Да, можно попробовать самостоятельно разобраться с аргументами функции sorted() .

Что можно хранить¶

Теперь добавим немного технических подробностей: возможно, уже заметили самостоятельно, что dict может принимать в качестве ключа не всякое значение. На самом деле только объекты (можно вызвать функцию hash() и получить значение) могут быть ключами словаря, на значения это ограничение не распространяется. В dict и set значение хеша от объекта используется для поиска внутри структуры.

Ключом словаря нельзя сделать объект типа, например, list , set или сам dict , так как значение их хеша может измениться со временем. Неизменяемый кортеж может быть ключом только если не содержит внутри изменяемые объекты.

Изменяемость и неизменяемость¶

В англоязычной литературе изменяемые типы называют , а неизменяемые – , почитать документацию.

В Python всё есть объект. Когда пользователь присваивает значение переменной, она начинает ассоциироваться с ячейкой памяти, где лежит это значение. Переменная знает адрес, откуда можно получить значение. id() и hex() показывают адрес в памяти компьютера. id() — адрес в десятичном виде, а hex() поможет перевести в шестнадцатеричный.

How to print a dictionary's key?

I would like to print a specific Python dictionary key:

Now I can check if mydic.has_key(‘key_name’) , but what I would like to do is print the name of the key ‘key_name’ . Of course I could use mydic.items() , but I don’t want all the keys listed, merely one specific key. For instance I’d expect something like this (in pseudo-code):

Is there any name_the_key() method to print a key name?

Edit: OK, thanks a lot guys for your reactions! 🙂 I realise my question is not well formulated and trivial. I just got confused because I realised ‘key_name’ and mydic[‘key_name’] are two different things and I thought it would be incorrect to print the ‘key_name’ out of the dictionary context. But indeed I can simply use the ‘key_name’ to refer to the key! 🙂

neydroydrec's user avatar

19 Answers 19

A dictionary has, by definition, an arbitrary number of keys. There is no «the key». You have the keys() method, which gives you a python list of all the keys, and you have the iteritems() method, which returns key-value pairs, so

Python 3 version:

So you have a handle on the keys, but they only really mean sense if coupled to a value. I hope I have understood your question.

Additionally you can use.

Hmm, I think that what you might be wanting to do is print all the keys in the dictionary and their respective values?

If so you want the following:

Make sure you use +’s instead of ,’ as well. The comma will put each of those items on a separate line I think, where as plus will put them on the same line.

Note:In Python 3, dic.iteritems() was renamed as dic.items()

The name of the key ‘key_name’ is ‘key_name’ , therefore

or whatever variable you have representing it.

cottontail's user avatar

Fouad Boukredine's user avatar

Since we’re all trying to guess what "print a key name" might mean, I’ll take a stab at it. Perhaps you want a function that takes a value from the dictionary and finds the corresponding key? A reverse lookup?

Note that many keys could have the same value, so this function will return some key having the value, perhaps not the one you intended.

If you need to do this frequently, it would make sense to construct the reverse dictionary:

Update for Python3: d.iteritems() is not longer supported in Python 3+ and should be replaced by d.items()

Edit: Updated for python 3’s f-strings.

Make sure to do

Or you can do it that manner:

Eugene Soldatov's user avatar

Rob Wilson's user avatar

What’s wrong with using ‘key_name’ instead, even if it is a variable?

Ry-'s user avatar

Probably the quickest way to retrieve only the key name:

Converts the dictionary into a list then it lists the first element which is the whole dict then it lists the first value of that element which is: key_name

I’m adding this answer as one of the other answers here (https://stackoverflow.com/a/5905752/1904943) is dated (Python 2; iteritems ), and the code presented — if updated for Python 3 per the suggested workaround in a comment to that answer — silently fails to return all relevant data.

Background

I have some metabolic data, represented in a graph (nodes, edges, . ). In a dictionary representation of those data, keys are of the form (604, 1037, 0) (representing source and target nodes, and the edge type), with values of the form 5.3.1.9 (representing EC enzyme codes).

Find keys for given values

The following code correctly finds my keys, given values:

whereas this code returns only the first (of possibly several matching) keys:

The latter code, naively updated replacing iteritems with items , fails to return (604, 3936, 0), (1037, 3936, 0 .

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

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