生成所有可能的客户和帐户组合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成所有可能的客户和帐户组合相关的知识,希望对你有一定的参考价值。

我正在开发一个应用程序来存储客户和帐户的关系数据(没有银行网域)。通常,在银行中,客户可以拥有一个账户,该账户可以是唯一账户,也可以与另一个客户拥有联名账户。

例如:客户C1具有唯一帐户A1。例如2:客户C1和C2拥有一个联名账户JA1,其中C1是主要持有人,而C2是非主要持有人。

我正在寻找一种算法,该算法将为给定数量的客户和帐户生成关系的所有可能组合。

例如:如果客户数量= 2,帐户数量= 2,则该算法应生成以下条目。

组合#1:C1-A1-主要C1-A2-主要C2-A1-非主要C2-A2-非主要

组合#2:C1-A1-主要C1-A2-非主要C2-A1-非主要C2-A2-Primary

组合#3:C1-A1-非主要C1-A2-主要C2-A1-主要C2-A2-非主要

组合#4:C1-A1-非主要C1-A2-非主要C2-A1-主要C2-A2-Primary

组合#5:C1-A1-鞋底C1-A2-主要C2-A2-非主要

组合#6:C1-A1-鞋底C1-A2-非主要C2-A2-Primary

组合#7:C1-A2-鞋底C1-A1-主要C2-A1-非主要

组合#8:C1-A2-鞋底C1-A1-非主要C2-A1-Primary

编辑:这不是组合的完整列表,但是算法应该生成所有这些组合。

答案

如果您与客户之间的关系有限,则:

1)使用以下命令创建字典:

dMapCustomer = <nCustomerId>: [<nAccountId1>, <nAccountId2>]

2)为每个客户创建所有可能的对,只是

lCustomerPairs = [(nCustomerId, nAccountId1), (nCustomerId, nAccountId2), ...]

3)连接步骤2中的所有对。

l = []
for nCustomer in lCustomer:
    l += lCustomerPairs

如果任何帐户可以与任何客户关联,则只需:

lAccounts = [1,2,3]
lCustomers = [4,5,6]
import itertools
list(itertools.product(lCustomers, lCustomers)) # all possible pairs of account and customer

以上是关于生成所有可能的客户和帐户组合的主要内容,如果未能解决你的问题,请参考以下文章

[Python]:生成所有可能组合的数组

生成所有可能的组合

生成所有可能的真/假组合

Matlab 生成所有可能的团队组合

生成所有可能的组合 - Java [重复]

生成所有可能的组合