首页 > 解决方案 > 如何处理“ValueError: ('max() arg 是一个空序列”

问题描述

def build_word_affect(self):
    affect_list = []
    affect_dict = dict()
    affect_frequencies = Counter()
    lexicon_keys = self.lexicon.keys()
    for word in self.words:
        if word in lexicon_keys:
            affect_list.extend(self.lexicon[word])
            affect_dict.update({word:self.lexicon[word]})
    for word in affect_list:
        affect_frequencies[word] += 1
    sum_values = sum(affect_frequencies.values())
    affect_percent = dict()
    for key in affect_frequencies.keys():
        affect_percent.update({key:float(affect_frequencies[key])/float(sum_values)})
    self.affect_list = affect_list
    self.affect_dict = affect_dict
    self.raw_emotion_scores = dict(affect_frequencies)
    self.affect_frequencies = affect_percent

使用上面的代码,我试图获得频率的最大值

emo_dict = self.affect_frequencies
max_value = max(emo_dict.values())

但是发生错误“ValueError:('max()arg是一个空序列','发生在索引36')”我发现错误发生是因为有时我输入的文本在lexicon_keys中没有任何单词在代码中->if word in lexicon_keys: 所以我努力做出一些例外,if word not in lexicon_keys:但它不起作用......请帮我修复这个代码。提前谢谢你。

供参考。lexicon_keys 中有 26,000 个不同的单词。

标签: pythonexception

解决方案


我不确定我的所有内容都与您的用法一致,因为您未能提供自给自足的代码。您需要检查是否有任何成员words也在lexicon_keys. 有两种简单的方法可以做到这一点。

一是any函数的简单应用:

if any(word in lexicon_keys for word in self.words):

另一种是集合交集的简单应用:

if set(self.words).intersection(set(lexicon_keys)):

推荐阅读