1

私にはこの問題に対するいくつかの解決策がありますが、どこかにエレガントな解決策、おそらく2つのライナーがあることを確信しています。

私はアイテムの膨大な選択(M)を持っています。基本的には、次のような数値機能を備えた辞書です。ItemOne = {幅:5、高さ:10、コスト:200、...}

この辞書/アイテムのセットをN(2、3、...)のグループに分割して、幅、高さ、またはその他の特徴の違いを基準に従って最小限に抑えるようにします(私は考えていました)差の二乗の合計)。基準のある部分は問題ではありません。サブセットを繰り返さずにデータセットを分割してすべての組み合わせを取得するための最も良い方法を見つけるのに苦労しています。

4

1 に答える 1

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)
于 2012-12-18T20:47:43.167 に答える