如何在python字典中进行重复键的总和?

问题描述

我知道 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]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...