首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:计算每周交通选项

Python:计算每周交通选项
EN

Stack Overflow用户
提问于 2021-08-04 23:32:31
回答 1查看 22关注 0票数 0

我有两个记录我每周使用的交通工具类型的字典:

代码语言:javascript
复制
transportation = {
    'car':[1,0,0,0,0,0,1],
    'walk':[0,1,0,1,0,0,0],
    'bike':[0,1,1,0,1,0,0],
 }

grains = {
    'overall':['car','walk','bike'],
    'environmentally_friendly':['walk','bike'],
 }

我想汇总一下过去一周我使用交通工具时的数据:

代码语言:javascript
复制
using_transportation = {
    'overall': 6,
    'environmentally_friendly': 4,
 }

如果一周是从周日到周六,overall是6,因为我周五不使用交通工具。environmentally_friendly是4,因为星期一我步行和骑自行车(只算作1),然后步行或骑自行车星期二到星期四。

这是我用来计算总体的,但不确定如何突破environmentally_friendly (不幸的是不能使用pandas ):

代码语言:javascript
复制
week = []
day = []

i = 0
while i <= 6:
    for k,v in datelist.items():
        day.append(v[i])
    if 1 in day:
        week.append(True)
    else:
        week.append(False)
    day = []
    i+=1

print(sum(week))

任何关于更好的方法的建议都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-05 00:22:41

这里有一个你可以解决这个问题的方法:

代码语言:javascript
复制
transportation = {                                                              
     'car':[1,0,0,0,0,0,1],                                                      
     'walk':[0,1,0,1,0,0,0],                                                     
     'bike':[0,1,1,0,1,0,0],                                                     
  }                                                                              
                                                                                 
 grains = {                                                                      
     'overall':['car','walk','bike'],                                            
     'environmentally_friendly':['walk','bike'],                                 
  }                                                                              
                                                                                 
 def save_the_planet(transportation, grains):                                    
     # Let't do the week plan (as a bonus)                                       
     def go(x, i): return [k for (k, v) in x.items() if v[i] == 1]               
     week = {                                                                    
             'monday':       go(transportation, 0),                              
             'tuesday':      go(transportation, 1),                              
             'wednesday':    go(transportation, 2),                              
             'thursday':     go(transportation, 3),                              
             'friday':       go(transportation, 4),                              
             'saturday':     go(transportation, 5),                              
             'sunday':       go(transportation, 6),                              
             }                                                                   
                                                                                 
     # Now lets calculate                                                        
     overall     = transportation.keys()                                         
     not_eco     = [x for x in overall if x not in grains['environmentally_friendly']]
     not_eco     = {k:v for k,v in week.items() if any([x in v for x in not_eco])}
     eco_week    = {k:v for k,v in week.items() if k not in not_eco.keys()}         
                                                                                   
     # Then le'ts reveal the answer                                              
     return {                                                                       
             'overall': len([x for x in week.values() if x]),                       
             'environmentally_friendly': len([x for x in eco_week.values() if x]),
             }                                                                      
                                                                                    
print(save_the_planet(transportation, grains))

您可能可以对其进行一些优化

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68659018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档