Есть две проблемы:
word1
в word_to_id
. word_to_id
необходимо учитывать только уникальные значения. Например, в Python 3.7+ вы можете использовать словари с упорядочением вставки:
for i, word in enumerate(dict.fromkeys(vocabulary)):
word_to_id[word] = i
for word1, word2 in labels:
ids.append([word_to_id[word1], word_to_id[word2]])
Альтернативой для версий до 3.7 является использование collections.OrderedDict
[118 ] или itertools
unique_everseen
рецепт .
Если нет требования к упорядочению, вы можете просто использовать set(vocabulary)
.
Да, Вы на 100% корректны на этом.
Обычно я перемещусь в пользовательские элементы управления, чтобы смочь кэшировать пользовательские элементы управления объектов, которые не изменяются от пользователя на пользователя.
Можно затем использовать Сессию или другое хранилище кэша, если необходимо кэшировать пользователя определенные данные.
Другая опция является "Пончиком, Кэширующимся", как Scott Guthrie называет его:
Реализация "пончик, кэширующийся" с ASP.NET 2.0 функции замены выходного кэша
Это позволяет Вам иметь кэширование уровня страницы при реализации определенных элементов в некэшируемых "дырах".
Да Вы корректны, и управление Заменой, отмеченное Andy (и Zhaph), является Вашим лучшим ответом при использовании ASP.NET 2.0 или выше. Создание средств управления отдельного пользователя для non-user-specific содержания является менее идеальным подходом, который должен только использоваться, если Вы застреваете, работая с ASP.NET v1.x (таким образом, необходимо отметить Andy как ответ, я думал бы).
В зависимости от того, сколько динамического contnent Вы имеете на странице, Вы могли использовать управление Заменой для рендеринга динамического контента на кэшируемой странице.
Это управление связывается со статическим методом (помните, что жизненный цикл страницы не работал, поскольку это - кэшированная версия страницы и ни один из объектов, созданных в Page_Load и т.д. wiil быть доступным), который возвращает динамический контент и может быть расположен везде, где Вы хотите на странице.
<asp:Substitution ID="mySubstitution" runat="server" MethodName="GetLoggeninUserName" />