我正在寻找一个相当有效的方法来附加一个列表中的每一项功能的频率。你知道吗
例如,给定以下列表:
[['syme', 4, 2], ['said', 4, 2], ['the', 3, 5]]
我想在它后面加上列表中后两项出现的频率。在上面的列表中,这看起来像这样:
[['syme', 4, 2, 2], ['said', 4, 2, 2], ['the', 3, 5, 1]]
其中第三个数字表示后两个数字作为列表中的后两项出现的频率。(例如,[4,2]是后两个数字的两倍,[3,5]出现一次,因此前两个列表将在末尾附加一个2,第三个列表将附加一个1。)
实际的列表可能有几十万个条目,因此效率和可读代码都在这里得到重视,我希望保持列表的当前顺序。你知道吗
提前谢谢!你知道吗
您可以使用
collections.Counter
类:如果顺序无关紧要:
可能最有效的方法是使用^{} 来获得基于对的计数
然后相应地更新列表:
如果两个项目的顺序无关紧要,那么在创建
counts
和更新lst
时,用sorted(...)
包装item[1:]
。你知道吗相关问题 更多 >
编程相关推荐