Как вы проверяете, что каждая запись в словаре не пуста в python? - PullRequest
0 голосов
/ 14 июля 2020

При попытке перебрать словарь я пытался убедиться, что каждое значение в словаре не None или пусто, и выдается ошибка. Код приведен ниже.

articleSummaries = {}
for techUrlDictionary in [newYorkTimesTechArticles, washingtonPostTechArticles]:
    for articleUrl in techUrlDictionary:
        if techUrlDictionary[articleUrl][0] is not None:
            if len(techUrlDictionary[articleUrl][0]) > 0:
                fs = FrequencySummarizer()
                summary = fs.extractFeatures(techUrlDictionary[articleUrl],25)
                articleSummaries[articleUrl] = {'feature-vector': summary,
                                               'label': 'Tech'}

И сообщение об ошибке выглядит так.

----> 5         if techUrlDictionary[articleUrl][0] is not None:
      6             if len(techUrlDictionary[articleUrl][0]) > 0:
      7                 fs = FrequencySummarizer()

TypeError: tuple indices must be integers or slices, not dict

Как лучше всего выполнить эти проверки? Так можно избежать этой ошибки?

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Я предполагаю, что каждый dict в списке имеет ключ 0. Поскольку вы просматриваете список с помощью dict s, вы можете получить доступ к dict s как есть:

articleSummaries = {}
for techUrlDictionary in [newYorkTimesTechArticles, washingtonPostTechArticles]:
    for articleUrl in techUrlDictionary:
        if articleUrl[0] is not None:
            if len(articleUrl[0]) > 0:
                fs = FrequencySummarizer()
                summary = fs.extractFeatures(articleUrl,25)
                articleUrl = {'feature-vector': summary,
                              'label': 'Tech'}
0 голосов
/ 14 июля 2020

Я не могу запустить ваш код, и формулировка вашего вопроса немного двусмысленна. Как сказал @Zvone, вы используете URL-адрес в качестве словаря.

Однако вы пытаетесь сделать что-то подобное?

articleSummaries = {}
for techUrlDictionary in [newYorkTimesTechArticles, washingtonPostTechArticles]:
    for articleUrl in techUrlDictionary:
        if techUrlDictionary[articleUrl][0]:
            if len(techUrlDictionary[articleUrl][0]) > 0:
                fs = FrequencySummarizer()
                summary = fs.extractFeatures(techUrlDictionary[articleUrl],25)
                articleSummaries[articleUrl] = {'feature-vector': summary,
                                               'label': 'Tech'}
        else:
            print("Empty entry") 
...