我有一个包含4个不同数字的列表,总共10个数字。我想为每个数字分配一个颜色/文字。 因此,问题是,如何从数字列表转到颜色列表,其中每个相同的数字都由相同的颜色/文字表示?
初始列表:
my_list = [72, 50, 3, 50, 16, 72, 3, 72, 3, 50]
预期输出:
print(my_list) -> ['red', 'blue', 'green', 'blue', 'black', 'red', 'green', 'red', 'green', 'blue']
我尝试了什么?
我从my_list中提取了唯一编号:
my_list = [72,50,3,50,72,3,72,3,50]
UniqueList = list(set(my_list))
print(UniqueList)
现在,我需要从颜色列表中为这4个唯一数字中的每一个分配一种颜色['红色','蓝色','绿色','黑色','黄色','紫色'],然后生成my_list再次带有颜色。不幸的是,我不知道如何前进。有什么想法吗?
答案 0 :(得分:2)
您可以创建一个查找字典:
my_list = [72, 50, 3, 50, 16, 72, 3, 72, 3, 50]
colors = ['red', 'blue', 'green', 'black', 'yellow', 'purple']
lookup = dict(zip(set(my_list), colors))
output = [lookup[number] for number in my_list]
print(output)
输出
['red', 'green', 'black', 'green', 'blue', 'red', 'black', 'red', 'black', 'green']
您可以考虑将lookup
字典作为为数字之一分配颜色的函数。在上面的示例中,查找具有以下值:
{72: 'red', 16: 'blue', 50: 'green', 3: 'black'}
这意味着它将在每次'red'
出现时分配72
。您可以像这样自定义lookup
:
lookup = {72 : 'green', 50 : 'black', 3 : 'yellow', 16: 'purple'}
这一次每次72
出现green
时都会被分配。有关如何在here中创建字典的更多信息。
更新
如果要保留列表中的出现顺序,可以执行以下操作:
seen = set()
result = []
for e in my_list:
if e not in seen:
result.append(e)
seen.add(e)
print(result)
输出
[72, 50, 3, 16]
请注意,列表result
是按出现顺序排列的。
答案 1 :(得分:1)
您还可以提供{int:color}键值对的字典,然后执行以下操作:
td