以下是我用 Python 编写的应用程序的基本步骤:
- 生成随机颜色列表
- 创建每种颜色的映射,由该颜色到 3D (r, g, b) 空间中的“源颜色”的距离进行索引。(例如,橙色 (255, 150, 0) 比深蓝色 (0, 0, 100) 更接近红色 (255, 0, 0)。现在,我有一个格式为 (distance, color )。
- 根据我计算的距离(从最低到最高)对该元组列表进行排序。
- 检索已排序颜色的列表
这是我的函数,我收到以下错误:TypeError: 'int' object has no attribute '_ getitem _' on line sorted_by_dist = sorted(colorMap, key=lambda tup: tup[0])
# Sorts a list of colors according to distance from the source color
def sort_colors(colors, source):
colorMap = ()
sortedColors = list()
for i in range(len(colors)):
dist = dist_3d(colors[i], source)
colorMap = colorMap + (dist, colors[i])
sorted_by_dist = sorted(colorMap, key=lambda tup: tup[0])
for (d, c) in sorted_by_dist:
sortedColors.append(c)
return sortedColors
假设我的 dist_3d() 函数是正确的并返回一个整数值(它是,并且确实),我做错了什么?我不明白。