【发布时间】:2020-04-28 22:46:48
【问题描述】:
我有一个这种格式的列表:
some_list = [[-5, 1000],
[0, 600],
[50, 600],
[100,700],
[170,650],
[190,700]]
并且函数 return 应该是带有键 -5、-4、-3 ... 的结果字典,其值是每个键的增量总和。所以例如上面应该是 -5 : 0 , -4 : 1000 , -3 : 2000 , -1 : 3000 , 0 : 4000 , 1 : 4600 及以后。
这是一些部分有效的代码。问题是需要一个上限来检查的 while 语句,因此我在列表末尾添加了其他项目。假设这可以以更优雅的方式解决。由于 break 语句,当前代码也排除了列表的最后一项行。
def framegen(some_list):
n = 0
ys = some_list[0][0]
frame = []
xpos = []
x2 = 0
for i in some_list:
while (some_list[n][0]) <= ys < (some_list[(n+1)][0]):
x1 = ys
frame.append(x1)
xpos.append(x2)
x2 += some_list[n][1]
ys += 1
if n == len(some_list) -2 :
break
else:
n += 1
temp_dic = dict(zip(frame, xpos))
dic = {}
for n in temp_dic:
dic[n] = temp_dic[n] - temp_dic[0]
return dic
编辑:
预期输出:
{ -5 : 0 ,
-4 : 1000 ,
-3 : 2000 ,
-2 : 3000 ,
-1 : 4000 ,
0 : 5000 ,
1 : 5600 ,
2 : 6200 ,
....}
【问题讨论】:
-
我不太明白你想要的结果字典是什么。请edit您的问题并显示相同输入的期望结果。
-
编辑了预期的输出。感谢您的调查。
-
您能否详细说明如何计算预期输出?不太清楚。
-
列表中的第一项是“计数器”,最后一项是乘数。所以从 -15 到 0,每步 1 应增加 1000。从 0 到 100,每步 1 的增量为 600,依此类推。最后一项增量可能应该被赋予 None 作为值,因为它没有被使用。生成的字典应该在列表中的最后一项停止,即 190。
-
预期输出末尾的
....}表明还有更多内容未显示。什么时候停止?
标签: python list dictionary for-loop nested-lists