问题描述
我知道 python 字典不保存重复值,如果有的话会修改。我的问题是,我们如何将这些重复值加在一起?
这是我的代码:
class ChoreTracker:
def __init__(self):
self.chores = {}
def add_hours(self,chores,time):
self.chores.update({chores:time})
def print_summary(self):
for i,(chore,time) in enumerate(self.chores.items()):
print(f"{chore}:",time)
tracker = ChoreTracker()
tracker.add_hours('sweeping',0.75)
tracker.add_hours('laundry',0.5)
tracker.add_hours('working',6)
tracker.add_hours('mopping',0.5)
tracker.add_hours('laundry',1)
tracker.add_hours('working',5.5)
tracker.print_summary()
我的输出:
laundry: 1
working: 5.5
mopping: 0.5
我想要的:
laundry: 1.50 hours
working: 11.50 hours
mopping: 0.50 hours
TOTAL: 14.25 hours
working 是重复键。我想添加它而不是仅仅修改值:working = 6 + 5.5
提前致谢:)
解决方法
首先检查密钥是否存在。如果是,请添加时间。
import numpy as np
import cv2
faceCascade = cv2.CascadeClassifier('Cascades/haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height
ret,img = cap.read()
img = cv2.flip(img,-1)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
while True:
if ret == False:
continue
faces = faceCascade.detectMultiScale(
gray,scaleFactor=1.2,minNeighbors=5,minSize = (20,20)
)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0),2)
roi_gray = gray[y:y+h,x:x+w]
roi_color = img[y:y+h,x:x+w]
cv2.imshow('video',img)
k = cv2.waitKey(30) & 0xff
if k == 27: # pressing esc in order to quit
break
cap.release()
cap.destroyAllWindows()
,
您可以使用 collections.Counter
,它是为数数事物量身定制的。
deleteKeys = []
for item in a_dict:
if a_dict[item] == []:
deleteKeys.append(item)
for i in deleteKeys:
del a_dict[i]