【发布时间】:2021-07-04 07:32:08
【问题描述】:
- 字典在下面
- 我需要提取
id和empid的计数,基本上是组计数
res = [{'id': 'ANN6', 'empid': 'YUZP336'}, {'id': 'ANNW', 'empid': 'YUZP336'}, {'id': 'ANNW', 'empid': 'YUZP336'}, {'id': 'ANNW', 'empid': 'Y2Z2666'}, {'id': 'ANNW', 'empid': 'YUZN66N'}, {'id': 'ANNW', 'empid': 'YAZ6U96'}, {'id': 'ANNW', 'empid': 'Y26UNZA'}, {'id': 'ANNW', 'empid': 'Y2PN929'}, {'id': 'ANNW', 'empid': 'Y2PU692'}, {'id': 'AWZ2', 'empid': 'VAW6U2Z'}, {'id': 'ANNW', 'empid': 'YWU2AWW'}, {'id': 'ANNW', 'empid': 'QWWPZA2'}, {'id': 'AWZ2', 'empid': 'YUAU2A3'}, {'id': 'ANNW', 'empid': 'QWWW2AP'}, {'id': 'ANNW', 'empid': 'QWWPA93'}, {'id': 'ANNW', 'empid': 'Y2AN6A6'}, {'id': 'A6UP', 'empid': 'RBZ6N99'}, {'id': 'A6UW', 'empid': 'Y2P623A'}, {'id': 'ANNW', 'empid': 'Y22NPW6'}, {'id': 'ANNW', 'empid': 'QWWP2UP'}, {'id': 'APN6', 'empid': 'QWWZAN9'}, {'id': 'ANNW', 'empid': 'QWWA9ZN'}, {'id': 'ANNW', 'empid': 'QWWU6Z6'}, {'id': 'ANNW', 'empid': 'QWWN3AA'}, {'id': 'ANNW', 'empid': 'YWUN6UP'}, {'id': 'ANNW', 'empid': 'Y266W23'}, {'id': 'ANNW', 'empid': 'Y3W39PP'}, {'id': 'ANNW', 'empid': 'Y23NPNU'}, {'id': 'ANNW', 'empid': 'QWW23NU'}, {'id': 'ANNW', 'empid': 'YWUZ9Z3'}, {'id': 'ANNW', 'empid': 'QWW3PPU'}, {'id': 'ANNW', 'empid': 'Y292Z9P'}, {'id': 'ANNW', 'empid': 'Y2P636U'}, {'id': 'ANNW', 'empid': 'Y2N39PA'}, {'id': 'ANNW', 'empid': 'QWWA3ZP'}, {'id': 'APA9', 'empid': 'YPNNP2A'}, {'id': 'ANNW', 'empid': 'YUN66U6'}, {'id': 'ANNW', 'empid': 'QWWW22U'}, {'id': 'AN6Z', 'empid': 'QWW62UU'}, {'id': 'ANNW', 'empid': 'Y269Z9A'}, {'id': 'ANNW', 'empid': 'YA9P9W6'}, {'id': 'APPA', 'empid': 'RX96393'}, {'id': 'ANNW', 'empid': 'RMZP266'}, {'id': 'A629', 'empid': 'XHWUWP3'}, {'id': 'ANNW', 'empid': 'RZ96A96'}, {'id': 'ANNW', 'empid': 'JH9Z3PW'}, {'id': 'ANNW', 'empid': 'Y23923U'}, {'id': 'ANNW', 'empid': 'RMZUW33'}, {'id': 'ANNW', 'empid': 'YWZ3PU3'}, {'id': 'AP99', 'empid': 'RX9Z2Z9'}, {'id': 'A6UU', 'empid': 'Y3W3Z2P'}, {'id': 'ANNW', 'empid': 'Y2Z2236'}, {'id': 'ANNW', 'empid': 'Y23932N'}, {'id': 'APZW', 'empid': 'VUX3Z2U'}, {'id': 'ANNP', 'empid': 'Y2AN2U2'}, {'id': 'ANNW', 'empid': 'YW662WW'}, {'id': 'ANN2', 'empid': 'Y22NPW6'}, {'id': 'ANNW', 'empid': 'QWW6322'}, {'id': 'A62Z', 'empid': 'YU9AWZ2'}, {'id': 'ANNW', 'empid': 'Y2A6ZPU'}, {'id': 'ANNW', 'empid': 'RX9NW23'}, {'id': 'ANNW', 'empid': 'Y3W3AA9'}, {'id': 'A62N', 'empid': 'Y2PZ393'}, {'id': 'ANNW', 'empid': 'RMZ9U23'}, {'id': 'ANZW', 'empid': 'QWW9WUN'}, {'id': 'ANNW', 'empid': 'QWWUWA6'}, {'id': 'ANNW', 'empid': 'YU9AWZ2'}, {'id': 'ANNW', 'empid': 'YUW2WNW'}, {'id': 'ANNW', 'empid': 'YGWWZU2'}, {'id': 'ANNW', 'empid': 'Y266AAP'}, {'id': 'ANNW', 'empid': 'Y3WP3UA'}, {'id': 'ANNW', 'empid': 'YU9ANU2'}, {'id': 'ANNW', 'empid': 'QWWW2W3'}, {'id': 'ANNW', 'empid': 'JQ3PZNN'}, {'id': 'ANNW', 'empid': 'RM93PU3'}, {'id': 'ANNW', 'empid': 'QWUWUUN'}, {'id': 'ANNW', 'empid': 'Q2U6APA'}, {'id': 'ANNW', 'empid': 'QWW6A2U'}, {'id': 'ANNW', 'empid': 'YU3323W'}, {'id': 'A6UW', 'empid': 'Y3WU93P'}, {'id': 'A623', 'empid': 'Q2ZA9A2'}, {'id': 'ANNW', 'empid': 'YW2UZUP'}, {'id': 'ANNW', 'empid': 'Y266NNW'}, {'id': 'ANNW', 'empid': 'Y22P99U'}, {'id': 'ANNW', 'empid': 'YONWNNU'}, {'id': 'ANNW', 'empid': 'Y2NZU3U'}, {'id': 'ANNW', 'empid': 'Y2ZZ9PN'}, {'id': 'AWN6', 'empid': 'QWW3PPU'}, {'id': 'ANNW', 'empid': 'QWW62U2'}, {'id': 'ANNW', 'empid': 'YUAU2A3'}, {'id': 'APNU', 'empid': 'VPXZ9P3'}, {'id': 'ANNW', 'empid': 'QWUAWUA'}, {'id': 'APZU', 'empid': 'YUAU2A3'}, {'id': 'ANNW', 'empid': 'SIZWNU3'}, {'id': 'ANNW', 'empid': 'Y296NZP'}, {'id': 'ANNW', 'empid': 'YUNNANN'}, {'id': 'ANNW', 'empid': 'Y2ZNAZZ'}, {'id': 'ANNW', 'empid': 'QWW3NNA'}, {'id': 'ANNW', 'empid': 'Y3W3Z2P'}, {'id': 'ANNW', 'empid': 'YU966WZ'}, {'id': 'ANNW', 'empid': 'QWWUWZN'}, {'id': 'ANNW', 'empid': 'QWWW2U9'}, {'id': 'ANNW', 'empid': 'Y2Z3ZPP'}, {'id': 'ANNW', 'empid': 'YW3ZU9P'}, {'id': 'ANNW', 'empid': 'RX9Z2Z9'}, {'id': 'AWNP', 'empid': 'QWWWU9P'}, {'id': 'ANNW', 'empid': 'QWWW22W'}, {'id': 'A629', 'empid': 'YU9AWZ2'}, {'id': 'APP2', 'empid': 'Y2336W3'}, {'id': 'APNU', 'empid': 'Y3W3696'}, {'id': 'APN6', 'empid': 'Y2Z9PZZ'}, {'id': 'ANNW', 'empid': 'YU23NP6'}, {'id': 'ANNW', 'empid': 'DA366AW'}, {'id': 'ANP9', 'empid': 'QWWW22U'}, {'id': 'AP9A', 'empid': 'QWW9WUN'}, {'id': 'APN6', 'empid': 'VAWA66A'}, {'id': 'ANNW', 'empid': 'Y3WPU93'}, {'id': 'ANNW', 'empid': 'Y26P999'}, {'id': 'ANN9', 'empid': 'Y22NPW6'}, {'id': 'ANNW', 'empid': 'QWWUPA2'}, {'id': 'ANNW', 'empid': 'QWWUAUW'}, {'id': 'ANNW', 'empid': 'QWW9ZW2'}, {'id': 'ANNW', 'empid': 'Y3W292W'}, {'id': 'ANNW', 'empid': 'YUZP336'}, {'id': 'APNP', 'empid': 'Q2ZA9A2'}, {'id': 'ANNW', 'empid': 'RMZ62ZA'}, {'id': 'ANP9', 'empid': 'Y2A6ZPU'}, {'id': 'ANNW', 'empid': 'UZX2UWP'}, {'id': 'A6W2', 'empid': 'QWWW2UA'}, {'id': 'ANN6', 'empid': 'Y2336W3'}, {'id': 'ANNW', 'empid': 'APUW9A9'}, {'id': 'ANNW', 'empid': 'DA63NPN'}, {'id': 'ANNW', 'empid': 'YW9NNWW'}, {'id': 'ANNW', 'empid': 'QWW292U'}, {'id': 'ANNW', 'empid': 'V6X9ZNZ'}, {'id': 'ANN6', 'empid': 'XHWUW6Z'}, {'id': 'ANNW', 'empid': 'Y3WPZNN'}, {'id': 'ANNW', 'empid': 'RM9PZ9A'}, {'id': 'ANNW', 'empid': 'RM9NP22'}, {'id': 'ANNW', 'empid': 'RM96AA9'}, {'id': 'APN6', 'empid': 'EP96ZZ2'}, {'id': 'ANNW', 'empid': 'EP96ZZ2'}, {'id': 'ANNW', 'empid': 'QWWWU9P'}, {'id': 'APPW', 'empid': 'RM96ZWW'}, {'id': 'ANNW', 'empid': 'Y2A9AW6'}, {'id': 'ANNW', 'empid': 'QWWNPAZ'}, {'id': 'AP99', 'empid': 'Y2A6ZPU'}, {'id': 'ANNW', 'empid': 'QWW62UU'}, {'id': 'AWNZ', 'empid': 'XFW2UWW'}, {'id': 'ANNW', 'empid': 'AA92633'}, {'id': 'ANNW', 'empid': 'TYZW6PZ'}, {'id': 'ANNW', 'empid': 'XGWA326'}, {'id': 'ANNW', 'empid': 'YUZUW62'}, {'id': 'ANNW', 'empid': 'Y2NUZA3'}, {'id': 'ANNW', 'empid': 'QWW6PPU'}, {'id': 'ANNW', 'empid': 'YW2WWA3'}, {'id': 'APP3', 'empid': 'Y3W3696'}, {'id': 'ANNW', 'empid': 'RM3NZ2Z'}, {'id': 'ANNW', 'empid': 'Y29Z2NA'}, {'id': 'ANNW', 'empid': 'DA9ZU3Z'}, {'id': 'APZW', 'empid': 'YWWAPNN'}, {'id': 'ANNW', 'empid': 'Y22Z26N'}, {'id': 'AZ29', 'empid': 'Y29AP9A'}, {'id': 'AUW9', 'empid': 'Y23923U'}, {'id': 'ANNW', 'empid': 'YUZWZZ9'}, {'id': 'ANNW', 'empid': 'QWW6AUN'}, {'id': 'ANNW', 'empid': 'QWWNP3P'}, {'id': 'A6W2', 'empid': 'Y3WPZPP'}, {'id': 'ANN2', 'empid': 'Y2336W3'}, {'id': 'ANNW', 'empid': 'RM9NU3A'}, {'id': 'ANNW', 'empid': 'QWWUAU2'}, {'id': 'ANNW', 'empid': 'Y22AAW2'}, {'id': 'ANNW', 'empid': 'Y2APWP6'}, {'id': 'ANNW', 'empid': 'Y22N2P6'}, {'id': 'ANNW', 'empid': 'Y3WP396'}, {'id': 'AN6Z', 'empid': 'Y266AAP'}, {'id': 'ANNW', 'empid': 'YUZP336'}, {'id': 'ANNW', 'empid': 'YUZP336'}, {'id': 'ANNW', 'empid': 'YUZP336'}]
代码如下
from operator import itemgetter
from itertools import groupby
from collections import OrderedDict
grouper = itemgetter('id', 'empid')
for i, v in groupby(res, key=grouper):
print(f"The count {dict(id=i[0], empid=i[1])} : {len(list(v))}")
我的输出没有给出正确的输出
{'id': 'ANNW', 'empid': 'YUZP336'} 上面的计数实际上是 12,但我得到了 3 倍的重复次数
The count {'id': 'ANNW', 'empid': 'YUZP336'} : 2
The count {'id': 'ANNW', 'empid': 'YUZP336'} : 1
The count {'id': 'ANNW', 'empid': 'YUZP336'} : 3
和上面一样,我需要提取所有的 id 和 empid
The count {'id': 'ANNW', 'empid': 'YUZP336'} : 12
The count {'id': 'ANNW', 'empid': 'QWW3NNA'} : 1
The count {'id': 'ANNW', 'empid': 'EP96ZZ2'} : 1
The count {'id': 'APN6', 'empid': 'EP96ZZ2'} : 1
.........
...........
【问题讨论】:
-
要使
groupby按预期工作,您需要先对数据进行排序。所以尝试在groupby中传递sorted(res, key=grouper)而不是res。碰巧key与groupby和sorted是相同的,但那是因为您正在对"id"和"empid"进行操作,并且字典中没有其他键。此外,该元素的计数是 6,而不是 12 :ğ. -
@MustafaAydın 我试过 for i, v in groupby(sorted(res, key=grouper)): print(f"计数 {dict(id=i[0], empid=i[ 1])} : {len(list(v))}"),我得到 keyerror
-
到底是什么错误?我试过了,没有。
-
@MustafaAydın 你能发布答案吗