我有两个记录我每周使用的交通工具类型的字典:
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'],
}我想汇总一下过去一周我使用交通工具时的数据:
using_transportation = {
'overall': 6,
'environmentally_friendly': 4,
}如果一周是从周日到周六,overall是6,因为我周五不使用交通工具。environmentally_friendly是4,因为星期一我步行和骑自行车(只算作1),然后步行或骑自行车星期二到星期四。
这是我用来计算总体的,但不确定如何突破environmentally_friendly (不幸的是不能使用pandas ):
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))任何关于更好的方法的建议都是非常感谢的!
发布于 2021-08-05 00:22:41
这里有一个你可以解决这个问题的方法:
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))您可能可以对其进行一些优化
https://stackoverflow.com/questions/68659018
复制相似问题