我对这个问题有一些解决方案,但我很遗憾,那里的某个地方有一个优雅的解决方案,也许是两个班轮。
我有很多选项(M),基本上是带有数字特征的词典,如: ItemOne = {width:5,height:10,cost:200,...}
我想将这组字典/项目分成N(2,3,...)组,以便根据标准将宽度,高度或其他特征之间的差异保持在最小值(我在想一个平方差异的总和)。具有该标准的部分不是问题,我只是难以找出最好的方法来分割数据集并获得所有组合而不重复子集。
答案 0 :(得分:1)
不是很清楚你在问什么,但我会试一试
#example items
items = [{'width':5, 'height':10, 'cost':200}, {'width':6, 'height':9, 'cost':2}]
#whatever you want your criteria to be
def calculate_criteria(item):
return item['width']+item['height']+item['cost']
# create subsets based on criterion
subsets = {}
for item in items:
criteria = calculate_criteria(item)
subset = subsets.get(criteria, list())
subset.append(item)
subsets[criteria] = subset
print subsets
{17: [{'width': 6, 'cost': 2, 'height': 9}], 215: [{'width': 5, 'cost': 200, 'height': 10}]}
甚至更好地使用collections.defaultdict
# create subsets based on criterion
subsets = collections.defaultdict(list)
for item in items:
subsets[calculate_criteria(item)].append(item)