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的最终目标是什么?