我在python中有以下列表:
[{'a':4,'b':40},{'a':6, 'b':60}, {'a':3, 'b':90}, {'a':7, 'b':95}]
'b'值按升序排列。
我也有一个num变量,比如num=25
。
我需要的是建立一个列表,在其中我总结所有'a',直到'b'之间的差异至少为num。
因此,对于此示例,结果应为:
[{'a':13, 'b':50}, {'a':9, 'b':30}]
只有两个元素,因为从第三个元素我们不能有'b大于num的差异。
我编写了这个有效的代码,但我使用了循环循环,它看起来比c代码更多,而不是python代码。
def get_new_data(data, time_length):
new_data=[]
for i in range(0,len(data)):
sum_data = 0
for j in range(i,len(data)):
sum_data += data[j]['a']
diff = data[j]['b'] - data[i]['b']
if diff>=time_length:
new_data.append({'a':sum_data, 'b':diff})
break
return new_data
data = [{'a':4,'b':40},{'a':6, 'b':60}, {'a':3, 'b':90}, {'a':7, 'b':95}]
print (data) new_data = get_new_data(data, 25) print (new_data)
是否有任何pythonic方法可以使用尽可能少的代码来完成它。
谢谢! 大卫
答案 0 :(得分:0)
使代码更“pythonic”的唯一方法可能是使用enumerate()
而不是rang(len(object))
。除此之外,它几乎与pythonic一样。