Python - zadanie z tablicami i pętlą

0

Witam, mam problem z drugą częścią tego zadania:
Pobierać od użytkownika wartości do momentu wpisania wartości zero. Znaleźć i
wypisać wszystkie elementy, które pojawiły się w tablicy więcej niż dwa razy.

Na tą chwile mam coś takiego:

wartosc = 0
tab = []
while True:
    wartosc = int(input())
    if wartosc == 0:
        break
    tab += str(wartosc)

for q in tab:
    sum = 0
    for w in tab:
        if q == w:
                sum += 1
    if sum > 2:
        print(q,sum)

Problem polega na tym, że program dobrze oblicza ilość wystąpień danego elementu, ale wypisuje ten element kilkukrotnie, a obok niego wartość.
Przykład:
dla 1 2 2 2 3 3 3 3
Wydruk:
2 3
2 3
2 3
3 4
3 4
3 4
3 4
Oczekiwany efekt:
2 3
3 4
Jak do takiego efektu dojść?

2

Jak sie uda, to i tak będzie przykra złożoność nie możesz tego przy uzyciu dict zrobić?

3

Nawet jeśli dane mają być przechowywane w tablicy to i tak bym tworzył i zliczał przy użyciu dict, jak jak wskazał @lion137
Dla przykładu tak ...

wartosc = 1
tab = []
tab_count = {}
while wartosc != 0:
    wartosc = int(input())
    tab.append(wartosc)
    if wartosc in tab_count:
        tab_count[wartosc] += 1
    else:
        tab_count[wartosc] = 1

for value, count in tab_count.items():
    if count > 2:
        print(value, count)

1

Przy użyciu dicta i tablic można tak też spróbować:

values = {}
while True:
    value = int(input())
    if not value:
        break
    values[value] = values.get(value, []) + [value]

for key, val in values.items():
    if len(val) > 2:
        print(key, len(val))

1 użytkowników online, w tym zalogowanych: 0, gości: 1