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
4

2 に答える 2

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 サブクラス。バッグまたはマルチセットと呼ばれることもあります。要素はディクショナリ キーとして格納され、そのカウントはディクショナリ値として格納されます。

于 2013-04-08T18:10:47.597 に答える
0

このようなものはどうですか?

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

次に、 Counter オブジェクトを使用してそこから要素をカウントできます。

于 2013-04-08T18:11:13.973 に答える