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

Эта проблема кажется действительно глупой, но я не могу ее решить.

У меня есть следующий список:

a = [2, 1, 3, 1, 1, 2, 3, 2, 3]

Мне нужно создать второй список того же размера, что и предыдущий, но отображаемые значения должны соответствовать количеству раз значение появилось в массиве до этого момента. Например:

b = [1, 1, 1, 2, 3, 2, 2, 3, 3]

Итак, b [0] = 1, потому что это первый раз, когда элемент «2» появляется в списке «a». b [5] = 2 и b [7] = 3, потому что это второй и третий раз, когда элемент «2» появляется в списке «a».

Ответы [ 2 ]

2 голосов
/ 27 мая 2020

Вот решение:

from collections import defaultdict
a = [2, 1, 3, 1, 1, 2, 3, 2, 3]
b = []
d = defaultdict(int)

for x in a:
  d[x] +=1
  b.append(d[x])

print(b)

Вывод:

[1, 1, 1, 2, 3, 2, 2, 3, 3]
0 голосов
/ 27 мая 2020

Я думаю, что использование словаря может вам помочь, в основном я повторяю список и сохраняю текущую частоту числа.

a = [2, 1, 3, 1, 1, 2, 3, 2, 3]
d = {}
z = []
for i in a:
    if i not in d:
        d[i] = 1
        z.append(1)
    else:
        d[i]+=1
        z.append(d[i])
print(z)
output = [1, 1, 1, 2, 3, 2, 2, 3, 3]  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...