如何解决TypeError:“ dict”和“ int”的实例之间不支持“ <”
我刚刚开始研究Python,目前正在尝试计算分段(将单词分段成单词)中字符序列的频率。我的count_seq
函数有问题。在此函数中,我希望在第一个循环中获取分段的每个片段(in_object),然后在第二个循环中对序列进行计数。
从我试图改变和理解的角度来看,我认为问题肯定出在for idx in range
循环中。
问题是这样的,当我尝试运行脚本时,我遇到了这个TypeError:“ TypeError:'
def main():
seq_length = 3
freq_dict = count_seq(in_object,seq_length)
print_freq(freq_dict)
def count_seq(segmentation,seq_length):
freq_dict = dict()
for idx in range(len(segmentation)):
freq_dict[idx] = dict()
segments = segmentation[idx].get_content()
for pos in range(len(segments)):
char = segments[pos:pos+seq_length]
if len(char) < seq_length:
continue
freq_dict[char] = freq_dict.get(char,0)+1
return freq_dict
def print_freq(freq_dict):
"""Recuperer le contenu de la fonction de l'exercice 2..."""
for key in sorted(freq_dict,key=freq_dict.get,reverse=True):
print("%s:%s" %(key,freq_dict[key]))
if __name__ == "builtins":
if in_objects:
main()
解决方法
致电sorted
时发生此错误。对项目进行排序的方式是将它们相互比较。您的freq_dict
的某些值是dict
,而有些值是int
,它们无法相互比较(小于:7或字典吗?没道理。
如果要以这种方式排序,则需要确保freq_dict
中的所有值都是可比较的类型。
在此块中,您将一堆键设置为空字典:
for idx in range(len(segmentation)):
freq_dict[idx] = dict()
然后在下一个循环中,将另一组键设置为int
。
freq_dict
的最终目标是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。