如何将单词分配给列表中的值?

时间:2019-10-15 02:01:02

标签: python list

我有一个包含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再次带有颜色。不幸的是,我不知道如何前进。有什么想法吗?

2 个答案:

答案 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