Есть ли более быстрый или более «питонический» способ доступа к значениям, связанным с одним ключом, в списке словарей, отличных от его циклирования (как показано на рисунке here)? Я ищу что-то вроде listDict[:]['id']
, чтобы получить список valules, но я получаю ошибку list indices must be integers, not str
, хотя listDict[0]['id']
работает просто отлично.ломтики в списке словарей
Обновление - вопрос последующего действия: Что делать, если значение для ключа также является самим списком, и меня интересуют только первые 10 его элементов?
При использовании понимания списка легко сделать [dic['id'][:10] for dic in listDict]
, но как насчет использования itemgetter
? map(itemgetter('id')[:10], listDict)
, похоже, не работает.
Я спрашиваю о быстром способе получить доступ, потому что у меня есть огромный список словарей, и я думал, что могу получить то же поведение, что и массивы numpy (например, срезы представляют собой только виды исходного массива) для списков словари. Мне интересно, есть ли у python какой-либо способ использования факта, что все словари в моем списке имеют одинаковый размер для быстрого доступа к памяти с чередованием и копирования больших блоков данных за один раз, не делая промежуточных представлений в виде списка списков.
Спасибо!
Извините, но это дубликат связанного вопроса вы дали, все такие же ответы – jamylak
Я знал ответы на этот вопрос, и я если есть какие-то другие альтернативы. – bbudescu
Самое питонное и самое быстрое решение - это принятый ответ – jamylak