我使用的是python3.5.2,我有一个dict
,它包含一个字符串元组作为“keys”,而作为“values”包含一个来自计数的整数。我想做一个双重排序,其中第一个优先级是键中的第一个字符串,第二个优先级是整数值。有关更深入的解释,请参见下文:
例如,我有一句话:
>>> print(unorderedDict.items())
dict_items([(('has', 'accomplished'), 1), (('new', 'french'), 1), (('pieces', 'machinery'), 1), (('in', 'those'), 1), (('east', 'on'), 1), (('sectarian', 'principles'), 1), ((',', 'are'), 10), (('all', 'countries'), 2)......])
它包含两个字符串的元组,例如('has', 'accomplished')
和一个整数ex.1
的值作为键。例如,所有人:([(('all', 'countries'), 2)])
。在
这本质上包含文本中找到的所有单词的唯一组合,以元组形式作为键,以及在文本中以整数形式出现的单词的唯一组合的次数。在
我想要一种对unorderedDict
排序的方法,第一个按键元组中的第一个字符串排序,第二个按值排序。在
这样做的目的是让我有一个单词列表,加上最有可能跟在它后面的单词,然后在列表中的下一个单词加上下一个最有可能跟在后面的单词。在
输出示例:
^{pr2}$请注意它是如何首先按元组中的第一个字符串(按字母顺序)排序,然后按值(从数字上从高到低)排序。在
为了执行这种排序算法,我需要什么python3代码?在
需要这种排序算法的主要原因是,我可以随机选择元组中的第一个字符串之一,然后获取元组中更经常找到的第二个字符串(由Count中的整数标识)。在
例如,我可以随机选择“all”,然后看到后面跟“the”的可能性比后面跟“of”的可能性大(vount of‘the’=10,vount of‘of’=7)。在
根据我自己的研究,我认为这可能与内置的dict
排序方法和lambda
有关,但这对我来说是一个新领域,所以我真的没有线索。在
基本上,这可以用^{} 完成:
不过,我认为您应该考虑使用另一种数据结构。例如,
^{pr2}$list
的无序dict
似乎是一个不错的选择,因为您只对第一个单词后面最常见的单词感兴趣:没有订购外字典是因为我怀疑它不需要(如果应该的话,我不知道该怎么做)。在
另一种选择可以是^{} 作为内部结构,因为它有一个很好的^{} 方法:
相关问题 更多 >
编程相关推荐