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