正确顺序的计数清单

问题描述

对于列表:

names=['fred','fred','bill','ted','ted']

我想返回每个名称的计数列表:

desired_list=[3,2,4]

请注意,每个名称的计数顺序与列表“名称”中的顺序相同。

我尝试过的代码: 输入:

name_count=[names.count(x) for x in set(names)]

输出

[4,3,2]

......但是顺序错误。它应该是[3,4] ...与名称列表中名称的顺序相同。

解决方法

使用collections.Counter

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<canvas id="canvas" width="800" height="500"></canvas>
<div id="output"></div>

from collections import Counter

names = ['fred','fred','bill','ted','ted']

print(list(Counter(names).values()))
,

使用<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <label>Time Zone: EST</label><br> <p class="line-item-property__field radio-toolbar"> <input required type="radio" id="10" name="properties[Time Zone: EST]" value="10:00 am" checked><label for="10">10:00 am</label> <input required type="radio" id="11" name="properties[Time Zone: EST]" value="11:00 am"> <label for="11">10:00 am</label> <input required type="radio" id="12" name="properties[Time Zone: EST]" value="12:00 am"><label for="12">12:00 am</label> <input required type="radio" id="13" name="properties[Time Zone: EST]" value="1:00 pm"> <label for="13">1:00 pm</label> <input required type="radio" id="14" name="properties[Time Zone: EST]" value="2:00 pm"> <label for="14">2:00 pm</label> <input required type="radio" id="15" name="properties[Time Zone: EST]" value="3:00 pm"> <label for="15">3:00 pm</label> <input required type="radio" id="16" name="properties[Time Zone: EST]" value="4:00 pm"><label for="16">4:00 pm</label> <input required type="radio" id="17" name="properties[Time Zone: EST]" value="5:00 pm"> <label for="17">5:00 pm</label> <input required type="radio" id="18" name="properties[Time Zone: EST]" value="6:00 pm"><label for="18">6:00 pm</label> <input required type="radio" id="19" name="properties[Time Zone: EST]" value="7:00 pm"> <label for="19">7:00 pm</label> <input required type="radio" id="20" name="properties[Time Zone: EST]" value="8:00 pm"> <label for="20">8:00 pm</label> <input required type="radio" id="21" name="properties[Time Zone: EST]" value="9:00 pm"> <label for="21">9:00 am</label> <input required type="radio" id="22" name="properties[Time Zone: EST]" value="10:00pm"><label for="22">10:00 am</label> </p>中的groupby并理解列表的另一个选项是:

itertools

哪个返回:

from itertools import groupby
names=['fred','ted']

res = [len(list(g[1])) for g in groupby(names)]
print(res)