我有一个字典如下:
A[1]
Out[351]: [0, 4, 5, 6]
A[2]
Out[352]: [1, 25, 8, 4]
高达:
A[7]
Out[352]: [0, 3, 6, 9]
鉴于这些,我必须使用以下条件填充另一个字典:
if A[1][0] <= A[2][0]:
l=1
else:
l=A[2][0]-A[1][2]/((A[1][1]-A[1][2])-(A[2][1]-A[2][0]))
给出:
l
Out[354]: 1
类似地:
if A[1][0] <= A[3][0]:
l=1
else:
l=A[3][0]-A[1][2]/((A[1][1]-A[1][2])-(A[3][1]-A[3][0]))
if A[1][0] <= A[4][0]:
l=1
else:
l=A[4][0]-A[1][2]/((A[1][1]-A[1][2])-(A[4][1]-A[4][0]))
高达:
if A[1][0] <= A[7][0]:
l=1
else:
l=A[7][0]-A[1][2]/((A[1][1]-A[1][2])-(A[7][1]-A[7][0]))
如果我追加这些,我应该得到:
l
Out[360]: [1, 1, 1, 1, 1, 1, 1]
我希望l成为一个词典:
{1: [1, 1, 1, 1, 1, 1, 1]}
表示A1和
{2: [some values]}
表示A2..upto
{7: [some values]}
代表A7。
一个问题是我必须从A [1] [0],A [2] [0]到A [1] [0],A [7] [0]开始计算,然后是A [2 ] [0],A [1] A [0] ......依此类推至A [7] [0],A [6] [0]。另一个问题是我需要在比较A [i] [0]和A [i] [0]的任何地方跳过计算。我最初尝试过这样的循环:
i=[i for i in A.keys()]
k=[k for k in A.keys()]
while i != k:
if A[i][0] <= A[k][0]:
B=1
else:
B=A[k][0]-A[i][2]/((A[i][1]-A[i][2])-(A[k][1]-A[k][0]))
k +=1
i +=1
我收到此错误:
File "<ipython-input-350-9d9e2d0e5d59>", line 8, in <module>
k +=1
TypeError: 'int' object is not iterable
请有人帮我解决问题。请注意,B必须是dict。
答案 0 :(得分:0)
好的,我想我已经开始理解你的事了。
我会说解决方案看起来像这样:
A = [
[0, 4, 5, 6],
[1, 25, 8, 4],
[0, 3, 6, 9],
]
D = {i: 1 if A[1][0] <= A[i][0] else A[i][0]-A[1][2]/((A[1][1]-A[1][2])-(A[i][1]-A[i][0])) for i in range(len(A))}
print D
# {0: 0, 1: 1, 2: 0}
我会写一些关于我在这里做什么的细节。但首先,我并不是100%肯定这就是你想要的结果。