【问题标题】:Using python hashmap for counting elements使用 python hashmap 计算元素
【发布时间】:2016-08-01 13:10:56
【问题描述】:

当我需要计算不同类型的元素时,我发现自己在写这样的东西:

if k not in removed:
    removed[k] = 0
removed[k] = removed[k] + 1

有时我会用一个新的空列表做同样的事情,这个列表会随着时间的推移而增长。 上面的代码运行良好,但感觉有更好的写法。 有吗?

【问题讨论】:

  • 我想你可能正在寻找codereview.stackexchange.com :) 这个网站是用于代码不起作用的。 CodeReview 适用于有效的代码,但您想尝试做得更好。 :)
  • 这听起来像是Counter 的工作。
  • 您可以通过使用defauldict 而不是普通的字典来使其更简洁。还有一个Counter 类,它有一些强大的方法,但运行速度有点慢,所以如果速度有问题,请使用 defaultdict,除非你想使用那些 Counter 方法。
  • 感谢 Counters 和 defaultdict 正是我想要的。下次我会使用 codereview (:

标签: python hashmap


【解决方案1】:

除了 cmets 中提到的 defaultdict/Counter 之外,您还可以从失败的get 返回默认值。这允许您在键查找失败时将初始计数设置为 0,并立即增加 1,或者每次在循环中找到键时增加 1。

vehicles = ['car', 'bike', 'truck', 'car', 'truck', 'truck']

my_dict = {}
for k in vehicles:
    my_dict[k] = my_dict.get(k, 0) + 1 

【讨论】:

    【解决方案2】:

    一种方法:

    countdict = dict()
    for k in inputlist:
        if k not in countdict.keys():
            countdict[k] = inputlist.count(k)
    

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2011-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-25
        • 2017-04-03
        • 2018-07-24
        相关资源
        最近更新 更多