Python - замена повторяющихся элементов в списке уникальными элементами из других списков - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь назначить уникальные цветовые значения каждому повторяющемуся элементу в списке.Для этого у меня есть два разных списка, один из которых содержит повторяющиеся значения (например, labels = [1, 5, 6, 7, 8, 12, 13, 17]).

Второй список (или список списка) содержит саму информацию о оттенке: group_pal = seaborn.husl_palette(len(set(labels)), s=.45).Ключевым моментом здесь является то, что длина group_pal всегда является числом уникальных элементов в labels.

Есть ли в Python один вкладыш для выполнения этой операции?

Ввод:

labels = [0, 0, 0, 1, 1, 2, 3]
group_pal = sns.husl_palette(len(set(labels)), s=.45)

Желаемый вывод:

labels = mapingMacro(labels, group_pal)
labels:
[0.8167028311697733, 0.5345122109266688, 0.5750280113923723]
[0.8167028311697733, 0.5345122109266688, 0.5750280113923723]
[0.8167028311697733, 0.5345122109266688, 0.5750280113923723]
[0.7256380093027939, 0.5865684184445076, 0.45124969098702544]
[0.7256380093027939, 0.5865684184445076, 0.45124969098702544]
[0.601243246823196, 0.6281411529879642, 0.44959498566071004]
[0.46712078684915886, 0.6454760674453914, 0.6277122757100324]

1 Ответ

0 голосов
/ 28 декабря 2018

Использование:

group_pal = [i for x,y in zip(sns.husl_palette(len(set(labels)), s=.45),
                              sorted(set(labels),key=labels.index)) 
             for i in np.repeat([x],labels.count(y),axis=0).tolist()]

А сейчас:

print(group_pal)

Есть:

[[0.8167028311697733, 0.5345122109266688, 0.5750280113923723],
 [0.8167028311697733, 0.5345122109266688, 0.5750280113923723], 
 [0.8167028311697733, 0.5345122109266688, 0.5750280113923723], 
 [0.601243246823196, 0.6281411529879642, 0.44959498566071004], 
 [0.601243246823196, 0.6281411529879642, 0.44959498566071004], 
 [0.46712078684915886, 0.6454760674453914, 0.6277122757100324], 
 [0.6254162090818173, 0.5854245228463807, 0.7893617517727602]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...