Может ли кто-нибудь помочь мне, как перечислить элементы списка, чтобы пометить подсчет вхождений элементов, т.е.
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']
Используйте словарь, который содержит счетчик для каждого префикса.
Поместите код в вопрос, а не в комментарий.
Также: stackoverflow.com/questions/2837409/…
Вы можете подсчитать количество вхождений каждого элемента в списке в:
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']
Этот ответ лучше, ОП должен принять это.
Я написал один, но он не в той же последовательности, что и в исходном списке.
>>> 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']
Где ты застрял?