python - 如何处理“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 个不同的单词。
解决方案
我不确定我的所有内容都与您的用法一致,因为您未能提供自给自足的代码。您需要检查是否有任何成员words
也在lexicon_keys
. 有两种简单的方法可以做到这一点。
一是any
函数的简单应用:
if any(word in lexicon_keys for word in self.words):
另一种是集合交集的简单应用:
if set(self.words).intersection(set(lexicon_keys)):
推荐阅读
- kubernetes - 在 EKS 中以不受支持的版本创建集群
- azure - 如何自动启用新 Azure VM 的日志记录?
- python - 合并两列并使用熊猫库创建新列
- amazon-web-services - 如何创建 AWS 托管 KMS 密钥
- python - Kubernetes:1 Pod 和 3 Pod 的性能没有区别?
- asp.net-core - 如何使用 SumAsync 计算 Asp.Net 核心中自定义值对象的总和
- node.js - GraphQL 订阅成功握手后收不到消息
- python - 在我没有 root 访问权限的服务器中的 docker 映像中运行 python 代码
- kubernetes - 如何获取 GKE fluentbit 相关错误的详细信息?
- r - R-highcharter中平行图中的颜色y轴