Я пытаюсь распечатать программу "banana"
из словаря. Какой самый простой способ сделать это?
Это мой словарь:
prices = {
"banana" : 4,
"apple" : 2,
"orange" : 1.5,
"pear" : 3
}
python
dictionary
slagoy
источник
источник
to print out banana with a FOR loop, so when I run it, each key would also be printed out
Вы имеете в видуfor k in prices: print k
? Это распечатает все ключи в словаре.Ответы:
На Python-версии, где на самом деле упорядочены dicts, вы можете сделать
Для заказа диктов вам понадобится Python 3.7+ или 3.6+, если вы в порядке, полагаясь на упорядоченную природу технически подробно описываемой реализацией диктов в Python 3.6.
Для более ранних версий Python «первый ключ» отсутствует.
источник
next(iter( my_dict.items() ))
Словарь не индексируется, но в некотором роде упорядочен. Следующее даст вам первый существующий ключ:
источник
list(my_dict)[0]
так как он все равно получит список ключей?Обновление: начиная с Python 3.7, порядок вставки поддерживается, поэтому вам здесь не нужно
OrderedDict
. Вы можете использовать следующие подходы с нормальнымdict
источник
Python 3.6 и более ранние *
Если вы говорите о обычном
dict
, то «первый ключ» ничего не значит. Ключи не упорядочены так, как вы можете зависеть. Если вы перебираете свои,dict
вы, скорее всего, не получите"banana"
первое, что увидите.Если вам нужно держать все в порядке, тогда вы должны использовать
OrderedDict
не просто словарь, а просто.Если вы хотите увидеть все ключи по порядку, вы можете сделать это, перебирая их
Вы можете, в качестве альтернативы, поместить все ключи в список, а затем работать с этим
Более быстрый способ получить первый элемент без создания списка - вызвать
next
итератор. Это не обобщает при попытке получитьnth
элемент, хотя* CPython имел гарантированный порядок вставки в качестве детали реализации в 3.6.
источник
Для Python 3 ниже исключены накладные расходы на преобразование списка:
источник
dict
Тип представляет собой неупорядоченное отображение, так что не существует такого понятия , как «первый» элемент.То, что вы хотите, вероятно
collections.OrderedDict
.источник
Так что я нашел эту страницу, пытаясь оптимизировать что-то, чтобы взять единственный ключ в словаре известной длины 1 и вернуть только ключ. Процесс ниже был самым быстрым для всех словарей, которые я пробовал до размера 700.
Я попробовал 7 различных подходов и обнаружил, что этот вариант был лучшим на моем Macbook 2014 с Python 3.6:
Результатами их профилирования были:
Все подходы, которые я попробовал, здесь:
источник
Ну как просто, ответ по моему будет
first = list(prices)[0]
Преобразование словаря в список выведет ключи, и мы выберем первый ключ из списка.
источник
next(iter(prices))
, как уже предлагали другие ответы.Как указали многие другие, в словаре нет первого значения. Сортировка в них является произвольной, и вы не можете рассчитывать на то, что сортировка будет одинаковой при каждом доступе к словарю. Однако, если вы хотите напечатать ключи, есть несколько способов:
Этот метод использует присвоение кортежей для доступа к ключу и значению. Это удобно, если вам по какой-то причине требуется доступ к ключу и значению.
Это даст только доступ к ключам, как и
keys()
предполагает метод.источник
d.keys () [0], чтобы получить индивидуальный ключ.
Обновление: - @AlejoBernardin, я не уверен, почему вы сказали, что это не сработало. вот я проверил и все заработало. импортировать коллекции
источник
dict.keys()
возвращает a'dict_keys' object
вместо alist
, который не поддерживает индексацию.Используйте цикл for, который охватывает все ключи в
prices
:Убедитесь, что вы измените
prices.items()
на,prices.iteritems()
если вы используете Python 2.xисточник
Если вы просто хотите получить первый ключ из словаря, вы должны использовать то, что многие предлагали ранее
Тем не менее, если вы хотите первое и оставить остальное в виде списка, вы можете использовать оператор распаковки значений
То же самое применимо на ценности, заменяя
prices
сprices.values()
и как ключ и значение , которое вы можете использовать даже распаковку назначениеисточник
Самый простой способ это:
но иногда вам следует быть осторожнее и убедиться, что ваша сущность является ценным списком, поэтому:
источник
TypeError: 'dict_keys' object is not subscriptable
, по крайней мере, с Python 3.8