Как получить доступ к элементу некоторого элемента в словаре - PullRequest
1 голос
/ 25 апреля 2020

У меня огромный словарь в Python. Допустим, 400 тыс. Пар элементов. Я знаю, что все ключи разные, а все значения - это векторы фиксированных размеров. Для дальнейшей обработки мне нужно создать numpy нулевой вектор с формой, идентичной форме всех векторов в словаре. Чтобы выполнить sh эту задачу, я запускаю следующий код:

import numpy as np
for vector in dictionary.values(): break;
accumulator = np.zeros_like(vector);

Есть ли более элегантный способ выполнить sh такую ​​же функциональность? Я пытался создать список из значений и получить

vector = list(dictionary.values())[0];

, но это было мучительно медленно.

Для l oop работает быстро и дает ожидаемые результаты, но я вижу это как грязный хак .

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Чтобы получить первое значение из итератора, вы можете использовать next

vector = next(iter(dictionary.values()))

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

0 голосов
/ 25 апреля 2020

Это для -1 oop действительно выглядит бесполезным. Разве это не сделало бы то же самое

vector = dictionary.values()[0]

Таким образом, вектор - это первый элемент из списка, который возвращает метод dictionary.values ​​().

--- EDIT ---

И как прокомментировал duckboycool, это работает в Python2. Но с Python3 вам нужно

vector = next(iter(dictionary.values()))

, как упомянуто здесь в посте Iain Shelvingtons.

Спасибо за исправление.

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