2015-11-01 2 views
0

У меня есть следующий код, над которым я работал, но я не могу найти способ подсчитать количество уникальных значений в списке анаграмм. Если я просто распечатаю: print len(anagram) Получаю полное значение списка, но оно включает в себя дубликаты.Подсчет уникальных значений в списке Python

Я попытался преобразовать список в набор и обратно, чтобы избавиться от дубликатов, но не повезло.

Спасибо!

#import libraries 
import urllib, itertools 

#import dictionary 
scrabble = urllib.urlopen('http://www.puzzlers.org/pub/wordlists/ospd.txt').read().split() 
#print the length of the dictionary 
print len(scrabble) 

#make anagrams from scrabble list 
anagrams = [list(g) for k,g in itertools.groupby(sorted(scrabble, key=sorted), key=sorted)] 


#print the largest anagram 
print "Largest number of anagrams for a word : ", len(max(anagrams, key=len)) 
print "Largest anagram word and values ", max(anagrams, key=len) 

ответ

1

Использовать set. set s держать только уникальные значения:

print len(set(anagram)) 
+0

я получил следующее сообщение об ошибке, когда я побежал этот код: TypeError: unhashable тип: 'список' – Andrew

+1

Ач. Вы хотите использовать 'tuple (g)' вместо 'list (g)', так как 'list' нельзя помещать в множества (поскольку они изменяемы). – nneonneo

+0

Спасибо! Это сработало! Он вернул значение 65783, что кажется немного большим, учитывая, что в списке содержится 79339 значений. – Andrew

Смежные вопросы