python - 将2个不等长的列表映射到字典

标签 python list dictionary scipy

我正在尝试创建一个颜色字典,其中整数映射到颜色。 在我的第一个列表 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/

相关文章:

python - 如何使我的类在 Python 中可打印?

python - 为什么我收到 MySQL 语法错误?

Python - 如何将多维列表排序为二维列表?

r - 如何将大列表中的 Entrez id 转换为基因符号并替换 R 中列表中的 entrez id?

Python + scrape strong within ul

python - Scrapy 获取超出范围的文本

python - 附加到列表理解中的列表

python - 组合两个字典,其中字典一个键是整数范围,第二个字典键是可能落入第一个键范围的整数

c# - 将两个列表映射到 C# 中的字典中

python - 在 Python 中 pickle 类实例的字典