Python 如何从两个列表中获取所有组合?

Python 如何从两个列表中获取所有组合?,python,Python,我想得到一些输入,比如: a = ['a', 'b'] b = ['c', 'd'] 输出如下: [{a:c, b:d},{a:d, b:c}, {a:c}, {b:c}, {a:d, b:d}] 如何用python编写它? 数组长度不总是2 我已通过以下代码解决了此问题: c = [] for i in range(len(a)): d = [] for j in range(len(b)): d.append({a[i]:b[j]}) if len

我想得到一些输入,比如:

a = ['a', 'b']
b = ['c', 'd']
输出如下:

[{a:c, b:d},{a:d, b:c}, {a:c}, {b:c}, {a:d, b:d}]
如何用python编写它? 数组长度不总是2

我已通过以下代码解决了此问题:

c = []
for i in range(len(a)):
    d = []
    for j in range(len(b)):
        d.append({a[i]:b[j]})
    if len(c) == 0:
        c = d
    else:
        tmp = []
        for k in range(len(c)):
            for l in range(len(d)):
                #print(c[k])
                tmp.append(dict(**c[k], **d[l]))
        c = tmp
这是一种使用:

我认为这会有所帮助。

输出:[{'a':'c'},{'a':'d'},{'b':'c'},{'b':'d'}]

您能提供一些输入的更多示例吗。对于这个具体的问题,我提出了这个。这是一个糟糕的解决方案,所以我想知道更多

def fun(inp1, inp2):
    lst = []
    for i in range(max(len(inp1), len(inp2))):
        if i == 0:
            dct = {inp1[i]: inp2[i], inp1[i+1]: inp2[i+1]}
            lst.append(dct)
        elif i == 1:
            dct = {inp1[i-1]: inp2[i], inp1[i]: inp2[i-1]}
            lst.append(dct)
    return lst

你写了什么代码?那么,说清楚一点,你想得到一个字典列表?数组
a
b
的长度是多少?是否总是2?我通常建议您使用itertools.product,但您显示的输出格式没有意义。这与提供的输出不匹配。
a = ['a', 'b']
b = ['c', 'd']

print([{x: y} for x in a for y in b])
def fun(inp1, inp2):
    lst = []
    for i in range(max(len(inp1), len(inp2))):
        if i == 0:
            dct = {inp1[i]: inp2[i], inp1[i+1]: inp2[i+1]}
            lst.append(dct)
        elif i == 1:
            dct = {inp1[i-1]: inp2[i], inp1[i]: inp2[i-1]}
            lst.append(dct)
    return lst