【问题标题】:Python List and count all unique values in listPython列出并计算列表中的所有唯一值
【发布时间】:2021-04-11 11:46:19
【问题描述】:

我有一个清单:

originalList = ['Item1', 'Item1', 'Item1', 'Item2', 'Item2', 'Item3', 'Item4']

我需要根据originalList 创建两个列表

我需要的第一个列表,应该列出所有唯一的项目,例如:

['Item1', 'Item2', 'Item3', 'Item4']

而另一个应该列出每个唯一值的计数:

[3, 2, 1, 1]

请帮忙

【问题讨论】:

    标签: python list unique-values


    【解决方案1】:

    Jordan Engstrom 提到的方式可以帮你找到答案。 另一种方法可以是:

    unique_list = sorted(list(set(originalList)))
    count_list = []
    for item in unique_list:
        count_list.append(original_list.count(item))
    

    如果列表中的项目数量较少,.count() 应该比 Counter 运行得更快。 Why is Collections.counter so slow? 您可以在此线程中阅读有关 Counter 性能的更多信息。

    【讨论】:

      【解决方案2】:

      您可以通过以下方式使用Counter

      from collections import Counter
      res = dict(Counter(originalList))
      

      获取键将给出结果列表,值将是每个元素的计数。

      获取 2 个列表:

      keys, values = map(list, zip(*d.items()))
      

      【讨论】:

      • 这太棒了!但是,我需要两个列表,并且是 python 的新手。如何根据新创建的字典创建两个列表?
      【解决方案3】:
      originalList = ['Item1', 'Item1', 'Item1', 'Item2', 'Item2', 'Item3', 'Item4']
      
      unique = sorted(set(originalList))
      
      frequency = [originalList.count(x) for x in unique]
      
      print(unique)
      print(frequency)
      
      >>> [3, 2, 1, 1]
      >>> ['Item1', 'Item2', 'Item3', 'Item4']
      

      使用set 删除重复项并使用sorted 对列表进行排序,这将为您提供唯一列表

      然后统计原始列表中每个唯一项出现的频率

      【讨论】:

        【解决方案4】:

        我同意您可以像提到的David S 一样使用Counter,但是如果您在列表之后,您可以在dict 的.keys() 和.values() 上调用list() 构造函数。完整的代码是这样的:

        from collections import Counter
        
        counts = Counter(originalList)  # Counter is a subclass of dict
        
        # for ['Item1', 'Item2', 'Item3', 'Item4']:
        list_1 = list(counts.keys())
        
        # for [3, 2, 1, 1]
        list_2 = list(counts.values())
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-11-27
          • 2016-11-11
          • 1970-01-01
          • 1970-01-01
          • 2019-10-11
          • 2012-08-30
          • 1970-01-01
          相关资源
          最近更新 更多