2017-02-07 27 views
0

我的字典d如下:計數頻率和更新它在字典本身

d 
{'EventThread': [40002], 'kworker/u16:13': [80002], 'kworker/u16:0': [80002], 'AudioOut_D': [80002, 80002, 80002, 80002, 80002, 80002], 'putmethod.latin': [80002], 'surfaceflinger': [40002], 'InputDispatcher': [80002]} 

我想類似的東西:

d 
{'AudioOut_D': [80002:6 ,40002:1]} 

這表明頻率項目

我試過下面的代碼:

print((collections.Counter(d['AudioOut_D']))) 
Counter({80002: 6}) 

但隨後如何更新到了如何生成字典辭典

TIA這個代碼如下:

e = {k: dict(Counter(v)) for k, v in d.iteritems()} 

這個作品:

self._sched_task_load_flags = defaultdict(list) 
def sched_task_load_handler(self,thread): 
     "accepts threads and builds corresponding threads and flags co-relation" 
     _sched_task_load_flags = self._sched_task_load_flags 
     try: 
      while True: 
       record = (yield) 
       if "sched_task_load"==record["function"]: 
        flags = record["flags"] 
       else: 
        print "error in sched_task_load_function_parse" 
        raise Exception 

如何兩項業務在環路下面結合很好,但我還需要獲得所有標誌的清單如下:

for k,v in flags.iteritems(): 
    list_of_all_flags.append(list(Counter(v))) 

怎麼可能對上述兩個循環的一個TIA結合

+0

首先,'{」 AudioOut_D':[80002:6,40002:1]}'不是有效的Python語法,**'[80002:6,40002:1]'**沒有意義 – ZdaR

+0

我的意思是說我需要計數/頻率事件及其類型 – R2D2

回答

2

是的,你可以申請Counter()方法上的每個值:

from collections import Counter 
e = {k: dict(Counter(v)) for k, v in d.iteritems()} 

輸出:

{'AudioOut_D': {80002: 6}, 
'EventThread': {40002: 1}, 
'InputDispatcher': {80002: 1}, 
'kworker/u16:0': {80002: 1}, 
'kworker/u16:13': {80002: 1}, 
'putmethod.latin': {80002: 1}, 
'surfaceflinger': {40002: 1}} 
+0

我想結合兩個操作與上面的循環作爲fol低點: – R2D2