Дамян обнови решението на 19.03.2014 02:28 (преди над 10 години)
+from collections import Counter
+from collections import defaultdict
+
+
+def anagrams(words) :
+ anagram_words = []
+ deputy = defaultdict(list)
+ for i in words :
+ deputy[tuple(sorted(x for x in i.lower() if x.isalpha()))].append(i)
+ return list(deputy[x] for x in deputy)
+
+
+def char_histogram(text) :
+ elements_and_counters = Counter()
+ for x in text :
+ elements_and_counters[x] += 1
+ return elements_and_counters
+
+
+def group_by_type(some_elements) :
+ elements_with_types = defaultdict(dict)
+ for key, value in some_elements.items() :
+ elements_with_types[type(key)].update({key: value})
+ return dict(elements_with_types)
+
+
+def is_pangram(seq) :
+ return len(set(x for x in seq.lower() if 'а' <= x <= 'я' )) == 30
+
+
+def sort_by(func, arg) :
+ sort_arg = [arg[0]]
+ numbers_in_sort_arg = 1
+ for i in arg[1: len(arg)] :
+ counter = 0
+ while counter <= len(sort_arg)-1 and func(i, sort_arg[counter]) >= 0 :
+ counter += 1
+ sort_arg.insert(counter, i)
+ return sort_arg
- хубаво си открил
Counter
, но го използваш катоdefaultdict
; ако се замислишCounter
иchar_histogram
правят едно и също нещо, така че сети се какво трябва да направиш :) - ако искаш да сложиш в речника
d
ключ'key'
със стойност1
, какво би направил:d.update({'key': 1})
d['key'] = 1
- няма смисъл от кастването към
dict
отdefaultdict
, няма да тестваме за типа на върнатото, просто трябва да е някакъв речник - тая твоя сортировка не работи за празен масив;
arg[0]
? - готино решение на
anagrams