python - Python - 用另一个列表中的唯一元素替换列表中的重复元素
问题描述
我正在尝试为列表中的每个重复元素分配唯一的颜色值。为此,我有两个不同的列表,一个是包含重复值的列表(例如labels = [1, 5, 6, 7, 8, 12, 13, 17]
)。
第二个列表(或列表列表)包含色调信息本身:
group_pal = seaborn.husl_palette(len(set(labels)), s=.45)
. 这里的关键是 的长度group_pal
始终是 中唯一元素的数量labels
。
是否有 python one 班轮来执行此操作?
输入:
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]
解决方案
利用:
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]]
推荐阅读
- stripe-payments - 用条纹支付
- reactjs - react组件如何使用数据而不作为props传递
- python-3.x - 如何使用键盘快捷键停止 While 循环
- javascript - NestJS/Mongoose:序列化不排除普通输出中的属性
- c# - 如何使用 Microsoft.Office.Tools.Word 中的 Document.PrintOut 方法打印文档的第一页
- python - 为什么在输入消息之后显示日志消息?
- mysql - Mysql:按最新查询优化分组
- jenkins - jenkins 并行使用pop() 到一个全局列表,导致Cannot pop() 一个空列表?
- symfony - Shopify 应用程序开发中的 Inventory_items.json 问题
- php - 如何在不重新加载页面的情况下更新选择选项值(模态)