Как сделать словарь с одинаковыми ключами в 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