Как сделать словарь с одинаковыми ключами в Python?

Есть такой список:

panel_name = ["ЩК1.1", "ЩК1.1", "ЩК1.1", "ЩК1.1", "ЩК1.2", "ЩК1.2", "ЩК1.2", "ЩК1.3", "ЩК1.3"]

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

ЩК1.1: 1
ЩК1.1: 2
ЩК1.1: 3
ЩК1.1: 4
ЩК1.2: 1
ЩК1.2: 2
ЩК1.2: 3
ЩК1.3: 1
ЩК1.3: 2

Пытался сделать через словарь:

circuit_name = {}
for i in range(len(panel_name)):
    test = 0
    for j in range(i, len(panel_name)):
        if panel_name[i] == panel_name[j]:
            test = test + 1;
            circuit_name[panel_name[j]] = test
        else: continue

Но в словаре невозможно использовать ключи с одинаковыми значениями! Как быть?


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

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

Не совсем понятно, зачем это нужно. Ключи в словаре должны быть уникальны, в этом весь смысл словаря. Если вам просто посчитать элементы, то это легко сделать используя Counter:

from collections import Counter

panel_name = ["ЩК1.1", "ЩК1.1", "ЩК1.1", "ЩК1.1", "ЩК1.2", "ЩК1.2", "ЩК1.2", "ЩК1.3", "ЩК1.3"]

counter = Counter(panel_name)
print(counter)

Вывод:

Counter({'ЩК1.1': 4, 'ЩК1.2': 3, 'ЩК1.3': 2})

Потом можно легко напечатать из счётчика список идентификаторов в том виде, как у вас в примере:

for k,v in counter.items():
    for i in range(v):
        print(f'{k}: {i+1}')

Вывод:

ЩК1.1: 1
ЩК1.1: 2
ЩК1.1: 3
ЩК1.1: 4
ЩК1.2: 1
ЩК1.2: 2
ЩК1.2: 3
ЩК1.3: 1
ЩК1.3: 2
→ Ссылка