我正在尝试创建一个颜色字典,其中整数映射到颜色。 在我的第一个列表 l1 中,它有 177 个项目,但只有 5 个唯一整数(0 到 4)。 在第二个列表中,它有 5 种 html 颜色。 我正在尝试创建一个字典,其中每种颜色将映射到一个唯一的整数。
l1=[3 2 3 3 0 2 4 4 2 3 2 2 4 0 3 2 2 2 1 3 2 3 2 2 2 0 3 1 0 2 2 2 4 2 4 2 0
2 0 4 0 4 2 0 2 2 2 4 1 3 2 2 2 1 0 3 3 2 0 2 3 4 1 0 0 1 3 1 3 1 4 3 4 1
4 0 2 3 2 0 4 1 3 0 0 4 0 4 0 2 2 1 2 2 1 0 4 4 3 1 3 2 2 2 4 4 2 0 3 4 4
0 3 4 3 4 2 2 2 3 3 1 0 2 3 1 1 4 0 1 2 0 0 2 0 0 0 0 2 3 1 0 3 3 3 2 2 3
3 0 0 0 2 0 3 2 0 0 0 2 2 0 4 3 3 0 2 2 3 2 3 3 0 2 0 4 3]
l2=['#000000', '#FFFFFF', '#FF0000', '#00FF00', '#0000FF']
这是我的代码:
color_map=dict(zip(l1,l2))
print color_map
但是,我得到了一本不完整的字典:
{0: '#0000FF', 2: '#FFFFFF', 3: '#00FF00'}
我该如何解决这个问题?
最佳答案
您需要一组,以便从 l
中获取所有唯一的号码:
print(dict(zip(set(l)),l2))
{0: '#000000', 1: '#FFFFFF', 2: '#FF0000', 3: '#00FF00', 4: '#0000FF'}
如果您始终希望对数字进行排序:
print(dict(zip(sorted(set(l)),l2)))
如果 l2
中只有 5 个值,则 l
中始终只需要 5 个唯一值,否则您将再次丢失数据。
关于python - 将2个不等长的列表映射到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28246724/