Bri*_*ian 6 python sorting tuples list
这是我用Python编写的应用程序的基本步骤:
这是我的函数,出现以下错误:TypeError:'int'对象在行sorted_by_dist = sorted(colorMap,key = lambda tup:tup [0])上没有属性'_ getitem _'
# 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
Run Code Online (Sandbox Code Playgroud)
假设我的dist_3d()函数正确并返回一个整数值(它是和确实),我在做什么错呢?我不明白
您正在将其构建colorMap为一个大的单维元组,第一个索引是int. 因此,您lambda将被传递int,然后您尝试对其进行索引。
您可能需要一个元组列表:
colorMap = []
...
dist = dist_3d(colors[i], source)
colorMap.append((dist, colors[i]))
Run Code Online (Sandbox Code Playgroud)
就颜色排序方法而言,我实际上使用了一个kdtree模块,加载了我所有的 RGB 元组。然后我可以要求它提供与给定颜色元组最接近的 N 个颜色:
from kdtree import KDTree
colors = [(10,10,10),(250,50,5),(100,50,20)]
query_color = (175, 25, 50)
tree = KDTree.construct_from_data(data)
# query the 2 closest colors
nearest = tree.query(query_point=query_color, t=2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |