J'ai une liste avec des objets comme celui-ci:
class Visit:
def __init__(self):
self.date = ''
self.diagnosis=''
self.doctor=''
self.price=0
J'ai besoin de regrouper les objets par deux champs - diagnosis
et doctor
, puis en comptant leur.
De ceci:
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),
J'ai besoin de quelque chose comme ça:
{ 3 : {'doctor':'Smith','diagnosis':'Z00'},
2 : {'doctor':'Smith','diagnosis':'K40'},
1 : {'doctor':'Jakobs','diagnosis':'K40'},
2 : {'doctor':'Abrams','diagnosis':'J00'}}
À l'avenir, cela pourrait être plus de champs. Je dois compter combien de fois une personne a consulté le même médecin avec le même diagnostic. Merci.
Si je comprends bien la question, vous demandez à compter combien de fois un médecin donné a émis un diagnostic spécifique. Dans ce cas, Counter
from collections
peut s'avérer utile:
from collections import Counter
class Visit:
def __init__(self):
self.date = ''
self.diagnosis=''
self.doctor=''
self.price=0
visits = [Visit() for _ in xrange(10)]
# tuples = [(visit.doctor, visit.diagnosis) for visit in visits]
# counted_visits = Counter(tuples)
counted_visits = Counter((visit.doctor, visit.diagnosis) for visit in visits)
output = [({'Doctor' : doctor, 'Diagnosis' : diagnosis}, k) \
for (doctor, diagnosis), k in counted_visits.items()]
print output
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras