On Oct 9, 1:13 pm, Token Type <typeto...@gmail.com> wrote: > yes, thanks all your tips. I did try sorted with itemgetter. > However, the sorted results are same as follows whether I > set reverse=True or reverse= False. Isn't it strange? Thanks.
That's because you're sorting each entry individually, not the entire result. For every key-value pair, you create a new empty list, append one tuple, and then sort it. The consistent order you're seeing is the outcome of stepping through the dictionary keys. This is untested, but it should be closer to what you're after, I think. First it creates `list_simi` as a generator, then it sorts it. import nltk from nltk.corpus import wordnet as wn from operator import itemgetter pairs = {'car':'automobile', 'gem':'jewel', 'journey':'voyage'} def find_similarity(word1, word2): as_synset = lambda word: wn.synset( str(word) + '.n.01' ) return as_synset(word1).path_similarity( as_synset(word2) ) similarity_value = itemgetter(1) list_simi = ( ('%s-%s' % (word1, word2), find_similarity(word1, word2) ) for word1, word2 in pairs.iteritems() ) list_simi = sorted(list_simi, key=similarity_value, reverse=True) -- http://mail.python.org/mailman/listinfo/python-list