首页 > 解决方案 > 如何根据提供的键值创建唯一组合?

问题描述

假设我有一个结构产品,其属性值数量未知且数量可变。属性值在运行时来自用户具有属性和值的独特组合的产品形成product_variant

例如,用户可以创建 4 个属性:

因此将有 5 * 3 * 2 * 9 = 270 个独特的产品变体。但是属性的数量可能是任意的,并且在编译时是未知的。

例子:

product_variant与:

%{ 
  size => m,
  material => paper,
  design => ds_abc,
  colour => red,
}

如何遍历所有属性及其各自的值,从而创建 270 个独特的产品变体?会有什么算法?

不带库函数。

在 C、Python 或伪代码中。

标签: algorithm

解决方案


如果您必须创建所有独特的产品,我建议使用循环: Python 中的示例:

    sizes = {}
    materials= {}
    designs = {}
    colours= {}
    
    products = {}
    
    for size in sizes:                 //for any size
        for meterial in material:      //for any material
            for design in designs:     //for any design
                for colour in colours: //for any colour
                    products.add(make_product(size, material, design, colour)) // create product object and add to collection

确保集合是唯一的 - 使用集合类型set


推荐阅读