小编Not*_*ick的帖子

按类型有效地对项目进行求和

我有一个项目与属性的列表"Type""Time"我想快速总结的时间为每个"Type"并追加到另一个列表.该列表如下所示:

Items = [{'Name': A, 'Type': 'Run', 'Time': 5},  
          {'Name': B, 'Type': 'Walk', 'Time': 15},  
          {'Name': C, 'Type': 'Drive', 'Time': 2},
          {'Name': D, 'Type': 'Walk', 'Time': 17},  
          {'Name': E, 'Type': 'Run', 'Time': 5}]
Run Code Online (Sandbox Code Playgroud)

我想做一些像这样工作的事情:

Travel_Times=[("Time_Running","Time_Walking","Time_Driving")]
Run=0
Walk=0
Drive=0    

for I in Items:
    if I['Type'] == 'Run':
       Run=Run+I['Time']
    elif I['Type'] == 'Walk': 
       Walk=Walk+I['Time']           
    elif I['Type'] == 'Drive': 
       Drive=Drive+I['Time']           

Travel_Times.append((Run,Walk,Drive))    
Run Code Online (Sandbox Code Playgroud)

随着Travel_Times最后看起来像这样:

print(Travel_Times)
[("Time_Running","Time_Walking","Time_Driving")
 (10,32,2)]
Run Code Online (Sandbox Code Playgroud)

对于列表理解或类似的东西来说,这似乎很容易有效collections.Counter,但我无法弄清楚.我想到的最好的方法是为每个"类型"使用单独的列表推导,但这需要重复遍历列表.我很感激有关如何加快它的任何想法.

谢谢

python iteration list-comprehension python-3.x

5
推荐指数
1
解决办法
119
查看次数