Превращение списка букв в список цифр - PullRequest
0 голосов
/ 21 октября 2018

Мне нужно превратить список чисел в список букв.

В частности, мне нужно прочитать PZ и превратить его в PZx, чтобы первая отдельная буква появилась в PZ предполагает в PZx число 1, вторая отдельная буква принимает число 2, третья отдельная буква принимает число 3, а четвертая отличная буква принимает число 4.Пример:

PZ = ['R','O','B','O','R','R','B','G','O','G','B','G']

PZx = [1,2,3,2,1,1,3,4,2,4,3,4]

Мне нужно написать функцию, которая превращает любой данный PZ в PZx в соответствии с этим правилом.

Ответы [ 5 ]

0 голосов
/ 21 октября 2018

Другой способ сделать это с помощью панд и понимания списка:

import pandas as pd

PZ = ['R', 'O', 'B', 'O', 'R', 'R', 'B', 'G', 'O', 'G', 'B', 'G']
PZ_unique = pd.unique(PZ).tolist()  # ['R', 'O', 'B', 'G']
PZx = [PZ_unique.index(pz) + 1 for pz in PZ]  # [1, 2, 3, 2, 1, 1, 3, 4, 2, 4, 3, 4]
0 голосов
/ 21 октября 2018

Это можно легко сделать с помощью словаря.Попробуйте что-то вроде этого.

PZ = ['R','O','B','O','R','R','B','G','O','G','B','G']
PZx = []
dict = {}
count = 1

for letter in PZ:
    if letter not in dict.keys():
        dict[letter] = count
        PZx.append(dict[letter])
        count+=1
    else:
        PZx.append(dict[letter])

сейчас PZx должно равняться [1,2,3,2,1,1,3,4,2,4,3,4]

0 голосов
/ 21 октября 2018

Я думаю, вы можете использовать список индексов и иметь простой цикл, подобный этому

occured = []
for item in PZ:
    if item not in occured:
        occured.append(item)
    PZx.append(occured.index(item) + 1)
0 голосов
/ 21 октября 2018

Вы можете использовать словарь и setdefault , из документации:

Если ключ находится в словаре, вернуть его значение.Если нет, вставьте ключ со значением по умолчанию и верните значение по умолчанию.по умолчанию используется значение Нет.

Код:

PZ = ['R','O','B','O','R','R','B','G','O','G','B','G']
uniques = {}
PZx = [uniques.setdefault(l, len(uniques) + 1) for l in PZ]
print(PZx)

Выход

[1, 2, 3, 2, 1, 1, 3, 4, 2, 4, 3, 4]
0 голосов
/ 21 октября 2018
In [1]: PZ = ['R','O','B','O','R','R','B','G','O','G','B','G']

In [2]: d = {}

In [3]: PZx = []

In [4]: n = 1
In [5]: for x in PZ:
...:     if x not in d:
...:         d[x] = n
...:         n += 1
...:     PZx += [d[x]]
...:

In [6]: PZx
Out[6]: [1, 2, 3, 2, 1, 1, 3, 4, 2, 4, 3, 4]
...