Как перечислить-пометить элементы списка в python?

Может ли кто-нибудь помочь мне, как перечислить элементы списка, чтобы пометить подсчет вхождений элементов, т.е.

list_in = ['a','b','c']
list_out =  ['a-1','b-1','c-1']
list_in = ['a','b','a']
list_out =  ['a-1','b-1','a-2']
list_in = ['a','a','a']
list_out =  ['a-1','a-2','a-3']

Где ты застрял?

Dani Mesejo 14.12.2020 16:51

Используйте словарь, который содержит счетчик для каждого префикса.

Barmar 14.12.2020 16:52

Поместите код в вопрос, а не в комментарий.

Barmar 14.12.2020 16:52

Также: stackoverflow.com/questions/2837409/…

Tomerikoo 14.12.2020 17:41
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
480
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете подсчитать количество вхождений каждого элемента в списке в:

list_in1 = ['a', 'b', 'c']
list_in2 = ['a', 'b', 'a']
list_in3 = ['a', 'a', 'a']


def reformat(list_in):
    counts = {item: list(range(list_in.count(item))) for item in set(list_in)}
    out = [f"{item}-{counts[item].pop(0)+1}" for item in list_in]
    print(out)


for list_in in (list_in1, list_in2, list_in3):
    reformat(list_in)

Вне:

['a-1', 'b-1', 'c-1']
['a-1', 'b-1', 'a-2']
['a-1', 'a-2', 'a-3']

Этот ответ лучше, ОП должен принять это.

Amit Amola 14.12.2020 17:08

Я написал один, но он не в той же последовательности, что и в исходном списке.

>>> from collections import Counter

>>> def enum(listy):
>>>     counter = Counter(listy)
>>>     final = []
>>>     for val in range(len(counter)):
>>>         alp, times = counter.popitem()
>>>         temp = []
>>>         for p in range(1, times+1):
>>>             temp.append(alp+'-'+str(p))
>>>         final.extend(temp)
        
>>>     return final

>>> list_in = ['a','b','a']

>>> print(enum(list_in))
['b-1', 'a-1', 'a-2']

Вот один из способов сделать это:

list_in = ['a','b','c']

lst_new = [list_in[x]+'-'+str(list_in[0:x+1].count(list_in[x])) for x in range(len(list_in))]

print(lst_new)
Ответ принят как подходящий

Вы можете подсчитать количество букв, предшествующих каждой из них в списке, и отформатировать результат в виде списка:

list_in  = ['a','b','a']

list_out = [f"{c}-{list_in[:i].count(c)+1}" for i,c in enumerate(list_in)]

# ['a-1', 'b-1', 'a-2']

Другие вопросы по теме