Python 子列表的计数值

Python 子列表的计数值,python,list,dictionary,counter,Python,List,Dictionary,Counter,假设我有一个Python列表,其中每个元素表示一天,以及一个商店中有多少产品可用: l=[ [a,a,a,b,c], [a,a,b,b,c], [a,b,b,c,c] ] 我想创建一个摘要,其中显示: Day 1: a:3, b:1, c:1 Day 2: a:2, b:2, c:1 Day 3: a:1, b:2, c:2 我需要它的格式,然后我可以图表随着时间的推移产品的可用性 我试过这个: 从集合导入计数器 计数器(l中x代表子列表,l中x代表子列表) 但这会对所有列表中的元素进

假设我有一个Python列表,其中每个元素表示一天,以及一个商店中有多少产品可用:

l=[
[a,a,a,b,c],
[a,a,b,b,c],
[a,b,b,c,c]
]
我想创建一个摘要,其中显示:

Day 1: a:3, b:1, c:1 
Day 2: a:2, b:2, c:1 
Day 3: a:1, b:2, c:2
我需要它的格式,然后我可以图表随着时间的推移产品的可用性

我试过这个:

从集合导入计数器
计数器(l中x代表子列表,l中x代表子列表)
但这会对所有列表中的元素进行计数,而不是返回每个子列表的结果

谢谢大家,以下是最终解决方案,包括图表:

from collections import Counter
d = {i:Counter(sublist) for i, sublist in enumerate(l, start=1)}
df = pd.DataFrame.from_dict(d, orient='index').reset_index()
df = df.melt('index', var_name='product',  value_name='vals')
df['product'] = df['product'].map({'A': 'a', 'B': 'b','C': 'c','D': 'd'})
sns.lineplot(x="index", y="vals", hue='product', data=df)

尝试听写理解:

>>> {f'Day {i}': Counter(sublist) for i, sublist in enumerate(l, start=1)}
{'Day 1': Counter({'a': 3, 'b': 1, 'c': 1}),
 'Day 2': Counter({'a': 2, 'b': 2, 'c': 1}),
 'Day 3': Counter({'a': 1, 'b': 2, 'c': 2})}

更简单和丑陋的版本的C,你们可以改变根据你们的需要

>>> for i in l:
...     x=Counter(i)
...     print(x['a'],'a')
...     print(x['b'],'b')
...     print(x['c'],'c')

您可以通过枚举列表来检索索引

尝试此
[l中子列表的计数器(子列表)]
这不会产生满足所述要求的结果:“以一种我可以随时间绘制产品可用性图表的格式”。Nice Answer。请注意,通过将
计数器(子列表)
更改为
dict(计数器(子列表))
,可以从结果中删除
计数器
对象,每个对象都被一个
dict
替换,我认为这通常是首选的。@Steve True,但是我觉得很少有涉及计数的情况,dict应优先于柜台。除非它依赖于丢失的钥匙。你可能是对的。由于对
计数器
类没有深入的了解,如果我只需要一个
dict
命令,我宁愿安全地使用它,不要使用它。即使我对
计数器
对象的行为有专业的了解,以后可能会有另一个程序员缺乏这方面的知识。在这一点上,我看到了从最终结果中剥离
计数器的使用的明显优势。我的想法是,其他人可能也会认为这是一种优势,但也许我错了。谢谢,这是一种享受!