Python перезаписывает все предыдущие объекты словаря последним

Необходимо создать словарь из множеств, но при выполнение программы последнее полученное множество записывается во все предыдущие объекты

Вот код:

import random
a = set()
b ={}
for i in range(5):
    for j in range(5):
        x=random.randint(1,10)
        a.add(x)
    b[i]=a
    print(b)
    a.clear()

Вывод:

{0: {1, 2, 3, 7, 10}}
{0: {2, 1, 10, 3}, 1: {2, 1, 10, 3}}
{0: {3, 4, 7}, 1: {3, 4, 7}, 2: {3, 4, 7}}
{0: {8, 1, 2, 9}, 1: {8, 1, 2, 9}, 2: {8, 1, 2, 9}, 3: {8, 1, 2, 9}}
{0: {10, 3, 4, 6}, 1: {10, 3, 4, 6}, 2: {10, 3, 4, 6}, 3: {10, 3, 4, 6}, 4: {10, 3, 4, 6}}

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

Автор решения: CrazyElf
a.clear()

Первое правило начинающего питониста: никогда (никогда-никогда) не используйте clear. Всегда создавайте новый объект. О чём бы речь не шла, о какой бы коллекции.

# a.clear()
a = set()

И тогда у вас не будет во всех элементах словаря ссылка на одно и то же множество, а будут разные множества, как это и должно быть.

→ Ссылка