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