我的字典中有数据,我使用命令
将其打印出来for i in mycount.items():
print i
结果是
('cooking', Counter({'VG': 26, 'N': 6}))
('Manager', Counter({'N': 1}))
('Hamilton', Counter({'NP': 17}))
('designing', Counter({'VG': 8, 'N': 1}))
('Niagara', Counter({'NP': 2}))
('hallucinating', Counter({'VG': 1}))
('succumb', Counter({'V': 1}))
('shocks', Counter({'N': 4, 'VBZ': 1}))
('crouch', Counter({'N': 2, 'V': 2}))
我希望将最终输出作为单词列表,按最高数字排列到最低数字:
cooking VG_26 N_6
Hamiliton NP_17
designing VG_8
我的问题是如何根据数据的特定部分对数据进行排序?我正在使用itemgetter但结果如下:(这是整个数据的部分结果)
for x in sorted(mycount.items(), key=itemgetter(1), reverse=True)[0:50]:
print json.dumps(x)
["best", {"ADV": 51, "DET": 3, "ADJ": 286, "V": 1}]
["open", {"ADV": 8, "N": 4, "ADJ": 238, "V": 55}]
["better", {"ADV": 159, "DET": 4, "ADJ": 233, "V": 6}]
["right", {"ADV": 75, "DET": 121, "ADJ": 222, "N": 179}]
注意:完成排序后,我会将数据清理为所需的格式。 请指导我。先谢谢你。
答案 0 :(得分:2)
你可能想要:
sorted(mycount.items(), key=lambda kv: [c[1] for c in kv[1].most_common()], revers=True)
e.g。按计数器中包含的计数排序,从最高到最低。
通过使用Counter().most_common()
,我们按排序顺序获取Counter
的键和值,让我们选择频率作为排序键;因为我们考虑了所有频率Niagara
在crouch
后排序,因为后者列出的频率更高。
演示:
>>> from pprint import pprint
>>> pprint(sorted(mycount.items(), key=lambda kv: [c[1] for c in kv[1].most_common()], reverse=True))
[('cooking', Counter({'VG': 26, 'N': 6})),
('Hamilton', Counter({'NP': 17})),
('designing', Counter({'VG': 8, 'N': 1})),
('shocks', Counter({'N': 4, 'VBZ': 1})),
('crouch', Counter({'N': 2, 'V': 2})),
('Niagara', Counter({'NP': 2})),
('Manager', Counter({'N': 1})),
('hallucinating', Counter({'VG': 1})),
('succumb', Counter({'V': 1}))]