python列表交叉组合算法

array1 = [{'a': '1'}, {'a': '2'}, {'a': '3'}]
array2 = [{'b': 'c'}, {'b': 'b'}, {'b': 'd'}]
array3 = [{'d': 'd'}, {'d': 'c'}, {'d': 'b'}]
array4 = [{'d': 'd'}, {'d': 'c'}, {'d': 'b'}]


def add(d1, d2):
    d3, d4 = d1.copy(), d2.copy()
    d3.update(d4)
    return d3


def merge_arrays(arr1=None, arr2=None):
    if arr2 is None:
        arr2 = []
    if arr1 is None:
        arr1 = []
    merged = []
    for v1 in arr1:
        for v2 in arr2:
            v3 = add(v1, v2)
            merged.append(v3)

    return merged


merged_array1 = merge_arrays(array1, array2)

merged_array2 = merge_arrays(merged_array1, array3)
merged_array3 = merge_arrays(merged_array2, array4)
print(len(merged_array2))
print(len(merged_array3))

l = [[{'a': '1'}, {'a': '2'}, {'a': '3'}], [{'b': 'c'}, {'b': 'b'}, {'b': 'd'}], [{'d': 'd'}, {'d': 'c'}, {'d': 'b'}], [{'d': 'd'}, {'d': 'c'}, {'d': 'b'}]]
result = []
for i in range(1, len(l)):
    if i == 1:
        result.extend(merge_arrays(l[0], l[1]))
    elif i > 1:
        result = merge_arrays(result, l[i])

print(result)
print(len(result))



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值