在Python中用于排序的容器

在Python中用于排序的容器,python,dictionary,containers,Python,Dictionary,Containers,任务是使用机器学习创建垃圾邮件过滤器。为了进行特征选择,我实现了一种方法,可以计算每个单词的MI,但是我想返回N个MI较高的单词,并根据它们在垃圾邮件中出现的次数在它们之间进行选择 附加要求的原因是我们使用的是小的lingspam集,结果之间几乎没有差异,大约有3000个单词共享相同的top MI值 我们需要在Python中实现这一点,我目前使用字典实现了这一点,但我找不到一个容器类型,可以让我做我需要的事情。您可以对字典中的项进行排序(必须使用自定义键),其中的项存储为列表 >>&

任务是使用机器学习创建垃圾邮件过滤器。为了进行特征选择,我实现了一种方法,可以计算每个单词的MI,但是我想返回N个MI较高的单词,并根据它们在垃圾邮件中出现的次数在它们之间进行选择

附加要求的原因是我们使用的是小的lingspam集,结果之间几乎没有差异,大约有3000个单词共享相同的top MI值


我们需要在Python中实现这一点,我目前使用字典实现了这一点,但我找不到一个容器类型,可以让我做我需要的事情。

您可以对字典中的项进行排序(必须使用自定义键),其中的项存储为列表

>>> some_dictionary = {"a": 1, "b": 5, "c": 0, "e": 2}
>>> sorted(some_dictionary.items())
[('a', 1), ('b', 5), ('c', 0), ('e', 2)]
>>> sorted(some_dictionary.items(), key=lambda i:i[1])                                                                                                                                                                                                                            
[('c', 0), ('a', 1), ('e', 2), ('b', 5)]
>>> 
其中
.items()
允许您获取字典中的项目(以任意顺序):


请注意,
dict_items
是一个iterable,在本例中它只是包装了一个列表。

Ah极好-我不知道使用sorted with lambdaIt的用法,在“key指定一个参数的函数,该参数用于从每个列表元素提取比较键”中有更好的解释
>>> some_dictionary.items()
dict_items([('a', 1), ('b', 5), ('e', 2), ('c', 0)])