Skip to content

Commit b285eaf

Browse files
authored
docs: improve docstrings and minor readability in anagrams module
1 parent 3c88735 commit b285eaf

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

strings/anagrams.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66

77

88
def signature(word: str) -> str:
9-
"""
10-
Return a word's frequency-based signature.
9+
"""Return a word's frequency-based signature.
1110
1211
>>> signature("test")
1312
'e1s1t2'
@@ -23,14 +22,13 @@ def signature(word: str) -> str:
2322

2423

2524
def anagram(my_word: str) -> list[str]:
26-
"""
27-
Return every anagram of the given word from the dictionary.
25+
"""Return every anagram of the given word from the dictionary.
2826
29-
>>> anagram('test')
27+
>>> anagram("test")
3028
['sett', 'stet', 'test']
31-
>>> anagram('this is a test')
29+
>>> anagram("this is a test")
3230
[]
33-
>>> anagram('final')
31+
>>> anagram("final")
3432
['final']
3533
"""
3634
return word_by_signature[signature(my_word)]
@@ -39,13 +37,17 @@ def anagram(my_word: str) -> list[str]:
3937
data: str = Path(__file__).parent.joinpath("words.txt").read_text(encoding="utf-8")
4038
word_list = sorted({word.strip().lower() for word in data.splitlines()})
4139

42-
word_by_signature = collections.defaultdict(list)
40+
word_by_signature: dict[str, list[str]] = collections.defaultdict(list)
4341
for word in word_list:
4442
word_by_signature[signature(word)].append(word)
4543

4644
if __name__ == "__main__":
47-
all_anagrams = {word: anagram(word) for word in word_list if len(anagram(word)) > 1}
45+
all_anagrams = {
46+
word: anagram(word)
47+
for word in word_list
48+
if len(anagram(word)) > 1
49+
}
4850

49-
with open("anagrams.txt", "w") as file:
51+
with open("anagrams.txt", "w", encoding="utf-8") as file:
5052
file.write("all_anagrams = \n")
5153
file.write(pprint.pformat(all_anagrams))

0 commit comments

Comments
 (0)