Существует ли встроенный / быстрый способ использовать список ключей словаря для получения списка соответствующих элементов?
Например, у меня есть:
>>> mydict = {'one': 1, 'two': 2, 'three': 3}
>>> mykeys = ['three', 'one']
Как я могу использовать, mykeys
чтобы получить соответствующие значения в словаре в виде списка?
>>> mydict.WHAT_GOES_HERE(mykeys)
[3, 1]
python
list
dictionary
key
FazJaxton
источник
источник
mydict
это вызов функции (который возвращает dict), то это вызывает функцию несколько раз, верно?Пара других способов, чем list-comp:
map(mydict.__getitem__, mykeys)
None
ключом if not found:map(mydict.get, mykeys)
Кроме того, использование
operator.itemgetter
может вернуть кортеж:Примечание : в Python3
map
возвращает итератор, а не список. Используйтеlist(map(...))
для списка.источник
Небольшое сравнение скорости:
Таким образом, понимание списка и itemgetter - самые быстрые способы сделать это.
ОБНОВЛЕНИЕ: Для больших случайных списков и карт у меня были немного другие результаты:
Таким образом , в этом случае ясно победитель
f = operator.itemgetter(*l); f(m)
, и аутсайдер:map(lambda _: m[_], l)
.ОБНОВЛЕНИЕ для Python 3.6.4:
Итак, результаты для Python 3.6.4 практически одинаковы.
источник
Вот три способа.
Поднятие,
KeyError
когда ключ не найден:Значения по умолчанию для отсутствующих ключей.
Пропуск пропущенных ключей.
источник
found_keys = mapping.keys() & iterable
даетTypeError: unsupported operand type(s) for &: 'list' and 'list'
на питоне 2.7; `found_keys = [ключ для ключа в mapping.keys (), если ключ в итерируемом] работает лучше всегоПопробуй это:
источник
Попробуй это:
источник
items()
является предпочтительным, он не должен делать дополнительный поиск, здесь нетlen(mydict)*len(mykeys)
операции! (обратите внимание, что я использую набор)mykeys
амортизированного постоянного времени, я использую набор, а не списокисточник
Панды делают это очень элегантно, хотя понимание списка часто будет более технически Pythonic. Сейчас у меня нет времени на сравнение скорости (я вернусь позже и добавлю):
источник
Или просто
mydict.keys()
вызов встроенного метода для словарей. Также исследуйтеmydict.values()
иmydict.items()
.// Ах, ОП сообщение смутило меня.
источник
После закрытия Python: эффективный способ создать список из значений dict с заданным порядком
Получение ключей без создания списка:
Выход:
Что соответствует порядку, указанному в списке
источник
В случае, если есть ключи не в dict.
источник