Python列出并计算列表中的所有唯一值
我有一份清单:Python列出并计算列表中的所有唯一值,python,list,unique-values,Python,List,Unique Values,我有一份清单: originalList=['Item1','Item1','Item1','Item2','Item3','Item4'] 我需要根据原始列表创建两个列表 我需要的第一个列表应该列出所有独特的项目,例如: ['Item1','Item2','Item3','Item4'] 而另一个应列出每个唯一值的计数: [3,2,1,1] 请帮助您可以通过以下方式使用: from collections import Counter res = dict(Counter(originalLi
originalList=['Item1','Item1','Item1','Item2','Item3','Item4']
我需要根据原始列表创建两个列表
我需要的第一个列表应该列出所有独特的项目,例如:
['Item1','Item2','Item3','Item4']
而另一个应列出每个唯一值的计数:
[3,2,1,1]
请帮助您可以通过以下方式使用:
from collections import Counter
res = dict(Counter(originalList))
获取键将给出结果列表,值将是每个元素的计数
要获取这两个列表:
keys, values = map(list, zip(*d.items()))
我同意您可以像前面提到的那样使用
计数器
,但是如果您在查找列表,您可以调用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())
使用set
删除重复项,并使用sorted
对列表进行排序,这将为您提供唯一的列表
然后用Jordan Engstrom提到的方法计算原始列表中每个独特项目的频率。 另一种方法可以是:
unique_list = sorted(list(set(originalList)))
count_list = []
for item in unique_list:
count_list.append(original_list.count(item))
如果列表中的项目数较少,则.count()的运行速度应快于计数器。
您可以在此线程中阅读有关计数器性能的更多信息。这太棒了!但是,我需要两个列表,并且是python新手。如何根据新创建的词典创建这两个列表?
unique_list = sorted(list(set(originalList)))
count_list = []
for item in unique_list:
count_list.append(original_list.count(item))