Python 列出并计算列表中的所有唯一值
Python List and count all unique values in list
我有一个列表:
originalList = ['Item1', 'Item1', 'Item1', 'Item2', 'Item2', 'Item3', 'Item4']
我需要根据 originalList
创建两个列表
我需要的第一个列表,应该列出所有独特的项目,例如:
['Item1', 'Item2', 'Item3', 'Item4']
而另一个应该列出每个唯一值的计数:
[3, 2, 1, 1]
请帮忙
您可以通过以下方式使用Counter
:
from collections import Counter
res = dict(Counter(originalList))
获取键将给出结果列表,值将是每个元素的计数。
获取 2 个列表:
keys, values = map(list, zip(*d.items()))
我同意你可以像 David S 提到的那样使用 Counter
,但是如果你在列表之后,你可以在 dict 的 .keys() 和 上调用 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())
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
对列表进行排序,这将为您提供唯一的列表
然后计算原始列表中每个唯一项目的频率
Jordan Engstrom 提到的方法可以为您找到答案。
另一种方式可以是:
unique_list = sorted(list(set(originalList)))
count_list = []
for item in unique_list:
count_list.append(original_list.count(item))
如果列表中的项目数量较少,.count() 应该 运行 比 Counter 更快。
您可以在此线程中阅读有关 Counter 性能的更多信息。
我有一个列表:
originalList = ['Item1', 'Item1', 'Item1', 'Item2', 'Item2', 'Item3', 'Item4']
我需要根据 originalList
我需要的第一个列表,应该列出所有独特的项目,例如:
['Item1', 'Item2', 'Item3', 'Item4']
而另一个应该列出每个唯一值的计数:
[3, 2, 1, 1]
请帮忙
您可以通过以下方式使用Counter
:
from collections import Counter
res = dict(Counter(originalList))
获取键将给出结果列表,值将是每个元素的计数。
获取 2 个列表:
keys, values = map(list, zip(*d.items()))
我同意你可以像 David S 提到的那样使用 Counter
,但是如果你在列表之后,你可以在 dict 的 .keys() 和 上调用 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())
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
对列表进行排序,这将为您提供唯一的列表
然后计算原始列表中每个唯一项目的频率
Jordan Engstrom 提到的方法可以为您找到答案。 另一种方式可以是:
unique_list = sorted(list(set(originalList)))
count_list = []
for item in unique_list:
count_list.append(original_list.count(item))
如果列表中的项目数量较少,.count() 应该 运行 比 Counter 更快。