Как словари с одинаковым значением одного ключа собрать в отдельные списки

Есть список словарей:

a = [{'letter': 'q', 'count': 2}, 
{'letter': 'r', 'count': 3}, 
{'letter': 'q', 'count': 5}, 
{'letter': 'e', 'count': 1}, 
{'letter': 'q', 'count': 6}, 
{'letter': 'r', 'count': 2}]

Необходимо сгруппировать их так, чтобы получить список словарей с одинаковым значением ключа letter, то есть

a = [[{'letter': 'q', 'count': 2}, {'letter': 'q', 'count': 5}, {'letter': 'q', 'count': 6}], [{'letter': 'r', 'count': 3}, {'letter': 'r', 'count': 2}], [{'letter': 'e', 'count': 1}]

Использовала такой код, но получается что есть несколько списков с одинаковыми словарями

for i in range(len(a)):
    letter = a[i]['letter']
    sp = []
    sp.append(a[i])
    for j in range(1, len(a)):
        if a[j]['letter'] == letter:
            sp.append(a[j])

Ответы (1 шт):

Автор решения: CrazyElf

Проще пересобрать данные в словарь с подходящим ключом:

a = [{'letter': 'q', 'count': 2}, 
{'letter': 'r', 'count': 3}, 
{'letter': 'q', 'count': 5}, 
{'letter': 'e', 'count': 1}, 
{'letter': 'q', 'count': 6}, 
{'letter': 'r', 'count': 2}]

sp = {}
for i in a:
    letter = i['letter']
    sp[letter] = sp.get(letter, []) + [i]

a = list(sp.values())
print(*a, sep='\n')

Вывод:

[{'letter': 'q', 'count': 2}, {'letter': 'q', 'count': 5}, {'letter': 'q', 'count': 6}]
[{'letter': 'r', 'count': 3}, {'letter': 'r', 'count': 2}]
[{'letter': 'e', 'count': 1}]
→ Ссылка