我有一个包含这样的对象的列表:
class Visit:
def __init__(self):
self.date = ''
self.diagnosis=''
self.doctor=''
self.price=0
我需要两个字段的组对象 - diagnosis
和doctor
,然后计算它们。
由此:
list = [Visit(date = '2014-05-24',diagnosis='Z00', doctor='Smith', price=0),
Visit(date = '2014-05-25',diagnosis='Z00', doctor='Smith', price=0),
Visit(date = '2014-05-15',diagnosis='Z00', doctor='Smith', price=0),
Visit(date = '2014-05-24',diagnosis='K40', doctor='Smith', price=0),
Visit(date = '2014-05-20',diagnosis='K40', doctor='Smith', price=0),
Visit(date = '2014-05-27',diagnosis='K40', doctor='Jakobs', price=0),
Visit(date = '2014-05-21',diagnosis='J00', doctor='Abrams', price=0),
Visit(date = '2014-05-22',diagnosis='J00', doctor='Abrams', price=0),
我需要得到这样的东西:
{ 3 : {'doctor':'Smith','diagnosis':'Z00'},
2 : {'doctor':'Smith','diagnosis':'K40'},
1 : {'doctor':'Jakobs','diagnosis':'K40'},
2 : {'doctor':'Abrams','diagnosis':'J00'}}
将来可能会有更多领域。我必须计算一个人在同一诊断中去过同一位医生的次数。感谢。
答案 0 :(得分:1)
如果我正确理解了这个问题,那么您需要计算某位医生发出特定诊断的次数。在这种情况下,来自Counter
的{{1}}可以证明是方便的:
collections
答案 1 :(得分:1)
您可以使用dict作为类属性来进行计数,然后在以下情况后反转键和值:
from collections import defaultdict
class Visit:
data = defaultdict(int)
def __init__(self, date, diagnosis, doctor, price):
self.date = date
self.diagnosis = diagnosis
self.doctor = doctor
self.price = price
Visit.data[(("doctor", doctor), ("diagnosis", diagnosis))] += 1
lst = [Visit(date='2014-05-24', diagnosis='Z00', doctor='Smith', price=0),
Visit(date='2014-05-25', diagnosis='Z00', doctor='Smith', price=0),
Visit(date='2014-05-15', diagnosis='Z00', doctor='Smith', price=0),
Visit(date='2014-05-24', diagnosis='K40', doctor='Smith', price=0),
Visit(date='2014-05-20', diagnosis='K40', doctor='Smith', price=0),
Visit(date='2014-05-27', diagnosis='K40', doctor='Jakobs', price=0),
Visit(date='2014-05-21', diagnosis='J00', doctor='Abrams', price=0),
Visit(date='2014-05-22', diagnosis='J00', doctor='Abrams', price=0)]
print({v:dict(k) for k,v in Visit.data.items()})
输出:
{1: {'diagnosis': 'K40', 'doctor': 'Jakobs'},
2: {'diagnosis': 'K40', 'doctor': 'Smith'},
3: {'diagnosis': 'Z00', 'doctor': 'Smith'}}