计算字典中项目出现的频率并在字典本身中更新它
count frequencies of occurrences of items in a dictionary and update it in dictionary itself
我有一个字典 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生成dict的代码如下:
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
如何在下面的循环中组合两个操作:
e = {k: dict(Counter(v)) for k, v in d.iteritems()}
效果很好,但我还需要获取所有标志的列表,如下所示:
for k,v in flags.iteritems():
list_of_all_flags.append(list(Counter(v)))
如何将以上两个循环组合在一个 TIA 中
是的,您可以对每个值应用 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}}
我有一个字典 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生成dict的代码如下:
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
如何在下面的循环中组合两个操作:
e = {k: dict(Counter(v)) for k, v in d.iteritems()}
效果很好,但我还需要获取所有标志的列表,如下所示:
for k,v in flags.iteritems():
list_of_all_flags.append(list(Counter(v)))
如何将以上两个循环组合在一个 TIA 中
是的,您可以对每个值应用 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}}