如何输出可从列表中找到最大频率值的字典?

时间:2019-01-19 20:08:49

标签: python jupyter-notebook

我正在尝试创建一个代码,该代码使用k-mer遍历一串Text,并输出最常见的模式。 (请注意,我也是初学者)。我正在使用Juptyer笔记本,每当我尝试运行代码时,都没有输出。 (也许与Juptyer有关)?例如,假设我的文本是GATGATATAC,k-mer是3,那么我想输出最频繁的模式并将其显示为带有每个3字母模式词的频率的索引字典。

    def FrequentWords(Text, k):
        words = []
        freq = FrequencyMap(Text, k)
        m = max(freq.values())
        for key in freq:
            if freq[key] == m:
                words.append(key)
    Text = 'GATTACCGACGTATGCTACTCCGATACGATAT'
    k = 3
    return words

我不确定我应该在哪里定义Text和k,以便测试代码(这也可能是一个问题)。就像我说的那样,我正在使用Juptyer笔记本,当我按Run时,什么也没有发生。

1 个答案:

答案 0 :(得分:0)

我相信你的意思是

def FrequentWords(Text, k):
    words = []
    freq = FrequencyMap(Text, k)
    m = max(freq.values())
    for key in freq:
        if freq[key] == m:
            words.append(key)
    return words

Text = 'GATTACCGACGTATGCTACTCCGATACGATAT'
k = 3
FrequentWords(Text, k)

此外,您还可以通过列表理解来简化您的功能:

def FrequentWords(Text, k):
    freq = FrequencyMap(Text, k)
    m = max(freq.values())
    return [key for key in freq if freq[key] == m]