Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列出并计算列表中的所有唯一值_Python_List_Unique Values - Fatal编程技术网

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))