我有三份清单:
W = ['Anis', 'James', 'Arthur']
C = ['City1', 'City2', 'City3']
Cost = [53, 27, 13, 80, 47, 67, 53, 73, 47]
我希望这些结果采用以下格式:
{('Anis', 'City1'): 53}
{('Anis', 'City2'): 27}
{('Anis', 'City3'): 13}
{('James', 'City1'): 80}
{('James', 'City2'): 47}
{('James', 'City3'): 67}
{('Arthur', 'City1'): 53}
{('Arthur', 'City2'): 73}
{('Arthur', 'City3'): 47}
我试过这个
`for i in range(n1):
for j in range(n1):
for c in range(n2):
combinations, mt = multidict({(W[i], C[j]): Cost[c]})
print(mt)`
我得到了这个:
{('Anis', 'City1'): 47}
{('Anis', 'City2'): 47}
{('Anis', 'City3'): 47}
{('James', 'City1'): 47}
{('James', 'City2'): 47}
{('James', 'City3'): 47}
{('Arthur', 'City1'): 47}
{('Arthur', 'City2'): 47}
{('Arthur', 'City3'): 47}
for循环中的成本值没有增加(我使用的是gurobi优化器库)
这可以通过对{}和{}使用
itertools.product
(每个值的组合)的组合来实现,然后对结果元组和Cost
列表之间的对应值对使用zip
:这使得:
如果实际上您想要的是一个单独的字典,而不是一系列的单元素字典,则将其修改为:
其中:
或者更简单地说(感谢用户Heap Overflow的建议):
另一种方法是使用迭代器:
输出:
我有两种方法可以让你做到这一点。最后,你得到了你的十进制的口述,但在一个包含口述的列表中
或者,对于更紧凑的代码,您可以使用listcomprehension:
相关问题 更多 >
编程相关推荐