Как отобразить список кортежей и посчитать одинаковое количество элементов - PullRequest
0 голосов
/ 07 мая 2020

ввод def inisial (daftar):

daftar = (

     "Michael","Viny","Aurelio","Michael",
     "Felix","Kevin","Vincen","Vincen","Michael")

inisial(daftar)

вывод:

Michael

Viny

Аурелио

Майкл2

Феликс

Кевин

Винсен2

Винсен3

Майкл3

Ответы [ 4 ]

0 голосов
/ 07 мая 2020

вы можете решить проблему с помощью следующего кода.

daftar = ("Michael", "Viny", "Aurelio", "Michael",
          "Felix", "Kevin", "Vincen", "Vincen", "Michael")

temp_dict = {}
for name in daftar:
    if temp_dict.get(name):
        temp_dict[name] += 1
    else:
        temp_dict[name] = 1

    if temp_dict[name] > 1:
        print('%s%d' % (name, temp_dict[name]))
    else:
        print(name)

0 голосов
/ 07 мая 2020

Вам необходимо подсчитать частоты записей в вашем списке и использовать эту частоту в восстановленном списке.

def inisial(daftar):
    freqs = {}
    for name in daftar:
        freqs[name] = freqs.get('name', 0) + 1
    ret = []
    for name in daftar:
        freq = freqs[name]
        if freq == 1:
            ret.append(name)
        elif freq > 1:
            ret.append(name + str(freq))
    return ret
0 голосов
/ 07 мая 2020

В дополнение к ответу @ Sandertjunh вы можете использовать collections.Counter .

0 голосов
/ 07 мая 2020

Я полагаю, вы хотите подсчитать количество вхождений каждого имени. Если да, то можно сделать вот так. Если вы хотите, чтобы вывод был другим, вы, конечно, можете изменить формат возврата словаря.

def inisial(daftar):
    d = {}
    for daft in daftar:
        if daft not in d:
            d[daft] = 0
        else:
            d[daft] += 1

    return d

daftar = (

     "Michael","Viny","Aurelio","Michael",
     "Felix","Kevin","Vincen","Vincen","Michael")

inisial(daftar)

Вывод:

{'Michael': 2, 'Viny': 0, 'Aurelio': 0, 'Felix': 0, 'Kevin': 0, 'Vincen': 1}
...