Python:找到最常见的字节?
我正在寻找一种(最好是简单的)方法来查找和排序 python 流元素中最常见的字节。
例如
>>> freq_bytes(b'hello world')
b'lohe wrd'
,甚至
>>> freq_bytes(b'hello world')
[108,111,104,101,32,119,114,100]
我目前有一个函数,它以 list[97] == 出现的“a”
形式返回列表。我需要对其进行排序。
我想我基本上需要翻转列表,所以 list[a] = b --> list[b] = a
同时删除重复项。
I'm looking for a (preferably simple) way to find and order the most common bytes in a python stream element.
e.g.
>>> freq_bytes(b'hello world')
b'lohe wrd'
or even
>>> freq_bytes(b'hello world')
[108,111,104,101,32,119,114,100]
I currently have a function that returns a list in the form list[97] == occurrences of "a"
. I need that to be sorted.
I figure I basically need to flip the list so list[a] = b --> list[b] = a
at the same time removing the repeates.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试集合模块中的 Counter 类。
请注意,您需要 Python 2.7 或更高版本。
编辑:忘记了most_common()方法返回了值/计数元组的列表,并使用列表理解来获取值。
Try the Counter class in the collections module.
Note you need Python 2.7 or later.
Edit: Forgot the most_common() method returned a list of value/count tuples, and used a list comprehension to get just the values.
我只是尝试了一些显而易见的事情。不过,@kindall 的回答很震撼。 :)
I just tried something obvious. @kindall's answer rocks, though. :)