2013-04-08 3 views
1

У меня есть следующий словарь питонасловарь Python словарей, считая значение элемента

resultDict: 
{'1234':{'alertStatus': 'open', 'reasonDescription': None}, 
'4321': {'alertStatus': 'closed', 'reasonDescription': 'Public'}, 
'6789': {'alertStatus': 'open', 'reasonDescription': 'None'}} 

Я хочу подсчитать количество открытых и закрытых оповещения (в режиме реального я иметь 5 различный статус, но для этого примера я сократили это до 2)

Я написал следующий код, но выглядит довольно неряшливо. Мне было интересно, если есть лучший способ сделать это

result = {} 
result['length'] = len(resultDict) 
lenOpen = 0 
lenClosed = 0 

for notifications in resultDict.values(): 
    if notifications['alertStatus'] == 'open': 
     lenOpen = lenOpen + 1 
    if notifications['alertStatus'] == 'closed': 
     lenClosed = lenClosed + 1 

statusCount = [] 
if lenOpen > 0: 
    statusCount.append(str(lenOpen) + ' ' + 'open') 
if lenOpenUnderInvestigation > 0: 
    statusCount.append(str(lenClosed) + ' ' +'closed') 

result['statusCount'] = statusCount 

ответ

2

Вы можете использовать collections.Counter:

In [2]: dic={'1234':{'alertStatus': 'open', 'reasonDescription': None}, 
    ...: '4321': {'alertStatus': 'closed', 'reasonDescription': 'Public'}, 
    ...: '6789': {'alertStatus': 'open', 'reasonDescription': 'None'}} 

In [3]: from collections import Counter 

In [4]: Counter(v['alertStatus'] for k,v in dic.items()) 

Out[4]: Counter({'open': 2, 'closed': 1}) 

помощь (счетчик):

Dict подкласса для подсчета hashable предметов , Иногда называется сумкой или мультимножеством. Элементы хранятся в виде словарных ключей, а их значения - , хранящиеся в словарных словах.

0

Как насчет этого?

alertStatuses = [x['alertStatus'] for x in resultDict.values()] 

Тогда вы можете подсчитать элементы оттуда с помощью Counter object.

Смежные вопросы