当前位置: 首页 > 面试题库 >

如何获得项目的计数格但保持它们出现的顺序?

慕容成和
2023-03-14
问题内容

例如,我需要计算一个单词在列表中出现的次数,不是按频率排序,而是按照单词出现的顺序(即插入顺序)进行计数。

from collections import Counter

words = ['oranges', 'apples', 'apples', 'bananas', 'kiwis', 'kiwis', 'apples']

c = Counter(words)

print(c)

所以代替: {'apples': 3, 'kiwis': 2, 'bananas': 1, 'oranges': 1}

我宁愿得到: {'oranges': 1, 'apples': 3, 'bananas': 1, 'kiwis': 2}

而且我真的不需要这种Counter方法,任何可以产生正确结果的方法对我来说都是可以的。


问题答案:

您可以使用使用和的配方:collections.Counter``collections.OrderedDict

from collections import Counter, OrderedDict

class OrderedCounter(Counter, OrderedDict):
    'Counter that remembers the order elements are first encountered'

    def __repr__(self):
        return '%s(%r)' % (self.__class__.__name__, OrderedDict(self))

    def __reduce__(self):
        return self.__class__, (OrderedDict(self),)

words = ["oranges", "apples", "apples", "bananas", "kiwis", "kiwis", "apples"]
c = OrderedCounter(words)
print(c)
# OrderedCounter(OrderedDict([('oranges', 1), ('apples', 3), ('bananas', 1), ('kiwis', 2)]))


 类似资料:
  • 是否有一种内置的方法来获取Enum的项目数,例如, 或者我必须根据元素的数量实现一个函数?

  • 然而,顺序是将示例5放在底部,而不是在其正确的位置。在阅读之后,我意识到对象键没有正确排序(按键排序JavaScript对象),并且JSON键不能是整数(按键排序JavaScript对象)。我需要保留对象顺序,而不是自动排序。原因是它的一个ID必须保持不变(所以没有数组替代)。 我是错过了一些简单的东西,还是需要重新思考/工作?

  • 问题内容: 我的作业问题就是这样 编写一个程序,使用以下命令以相反的顺序打印char数组中的字母 例如,如果数组包含{‘c’,’s’,’c’,‘2’,‘6’,‘1’},则输出应为“ 162csc”。 我尝试过,但是我不知道这意味着什么 我这样做了,但是在主方法中调用方法“ printReverse”存在问题 问题答案: 我相信您所写的是您必须创建的方法的签名。 您将必须迭代数组并向后打印其中包含的

  • 有没有办法保留重复订单,或者至少当它找到重复订单时,把它放在价值相等的订单后面?

  • 在Python中,我有一个ndarray,它打印为 对象没有属性 我该怎么办?

  • 问题内容: 我有一个数组如下 预期结果 尝试如下 问题答案: 无需使用jQuery即可完成此任务-此示例将构建一个对象,其中包含数组中每个不同元素的出现次数