#!/usr/bin/env python3 ifile = './gibberish.txt' with open(ifile) as f: content = f.read() lines = content.split('\n') words = [ w for l in lines for w in l.split() if w ] words_uniq = {w: words.count(w) for w in set(words)} top_word = sorted(words_uniq, key=lambda x: words_uniq[x])[-1] longest_line = sorted(lines, key=lambda x: len(x))[-1] max_uniq_symbols_line = sorted(enumerate(lines), key=lambda x: len(set(x[1])))[-1][0] +1 max_uniq_words_line = sorted(enumerate(lines), key=lambda x: len(set([w for w in x[1].split() if w])))[-1][0] + 1 palindrome_words_count = len([w for w in words_uniq if w == w[::-1]]) print( """ 1. {0} 2. {1} 3. {2} 4. {3} 5. {4} """.format(top_word, longest_line, max_uniq_symbols_line, max_uniq_words_line, palindrome_words_count) )