Проблема со словарным ключом в Python - PullRequest
0 голосов
/ 17 мая 2010

Для какого-то проекта мне нужно создать словарь, в котором ключи - это URL-адреса, среди которых у меня есть этот URL-адрес:

http://www.microsoft.com/isapi/redir.dll?prd=windows&sbp=mediaplayer&ar=Media&sba=Guide&pver=6.2

URL-адрес слишком длинный, чтобы поместиться здесь, я думаю, в одну строку. Я могу создать словарь без каких-либо ошибок, этот URL-адрес также является ключевым. но по какой-то причине, когда я хочу извлечь значения, связанные с этим ключом (URL). Я не могу, я получаю и сообщение об ошибке "ключ ошибки: ...." Кто-нибудь знает, что не так с этим URL? Чувствительны ли словарные ключи к некоторым вещам? спасибо

ниже код:

def initialize_sumWTP_table(cursor):
cursor.execute( ''' SELECT url,tagsCount
                     FROM sumWTP''')
rows = cursor.fetchall ()
for url,tagsCount in rows:
    sumWTP[url] = tagsCount

Ответы [ 4 ]

1 голос
/ 18 мая 2010

Проблема заключалась в ошибке в моем коде. Я добавил некоторую обработку исключений для решения проблемы. Данные были правильными, но я забыл сделать обработку исключений в этих случаях. Пример:

def getWPT(url,tag):
try:
    row = MemoryInitializer.wtp[url][tag]
except KeyError:
    row = 0
#print row
return row
1 голос
/ 17 мая 2010

Почти невозможно представить, чтобы словарь "терял" ваш ключ. Я предполагаю, что в строке есть небольшое изменение (регистр или порядок строки запроса), которое приводит к тому же эффективному URL, но с немного другой строкой.

Если это так, найдите способ «нормализовать» URL.

0 голосов
/ 17 мая 2010

Трудно сказать, основываясь на предложенном фрагменте кода. Похоже, вы инициализируете словарь. Сначала нужно создать словарь sumWTP, что-то вроде: sumWTP = {}. Тогда заявления типа sumWTP [url] = tagcount должно работать.

0 голосов
/ 17 мая 2010

Причиной получения ошибки ключа при доступе к dict является то, что ключ не существует. Убедитесь, что ключ, который, по вашему мнению, существует, и что вы используете правильную строку.

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