python - 将具有月份名称的嵌套列表转换或格式化为python中的新列表
问题描述
我有一个这样的嵌套列表:
data = [[[], 'October'],
[[], 'October'],
[[], 'October'],
[['covid-19'], 'October'],
[['covid-19'], 'October'],
[[], 'October'],
[['covid-19'], 'October'],
[[], 'October'],
[['tiktok', 'tenaga kesehatan'], 'October'],
[[], 'October'],
[['covid-19'], 'October'],
[['kanker'], 'October'],
[['covid-19'], 'October'],
[[], 'October'],
[[], 'October'],
[['covid-19'], 'October'],
[[], 'October'],
[['jantung'], 'October'],
[['covid-19'], 'October'],
[[], 'October'],
[[], 'October'],
[[], 'October'],
[[], 'October'],
[[], 'October'],
[[], 'October'],
[[], 'October'],
[[], 'October'],
[[], 'October'],
[['covid-19'], 'October'],
[['covid-19'], 'October'],
[['covid-19'], 'October'],
[[], 'October'],
[[], 'October'],
[[], 'October'],
[[], 'October'],
[['covid-19'], 'October'],
[[], 'October'],
[['jantung'], 'October'],
[['covid-19'], 'October'],
[['covid-19'], 'October'],
[['covid-19'], 'October'],
[['covid-19'], 'October'],
[['covid-19'], 'October'],
[['covid-19', 'covid-19'], 'October'],
[['covid-19'], 'October'],
[[], 'September'],
[['covid-19'], 'September'],
[['covid-19'], 'September'],
[[], 'September'],
[[], 'September'],
[['covid-19', 'covid-19'], 'September'],
[['jantung'], 'September'],
[['jantung'], 'September'],
[['covid-19'], 'September'],
[['covid-19'], 'September'],
[['covid-19'], 'September'],
[[], 'September'],
[['covid-19'], 'September'],
[[], 'September'],
[['covid-19'], 'September'],
[[], 'September'],
[['covid-19'], 'September'],
[['covid-19'], 'September'],
[[], 'September'],
[['covid-19'], 'September'],
[[], 'September'],
[['covid-19'], 'September'],
[['covid-19'], 'September'],
[[], 'September'],
[[], 'September'],
[['covid-19'], 'September'],
[[], 'September'],
[[], 'August'],
[[], 'August'],
[[], 'August'],
[['covid-19'], 'August'],
[[], 'August'],
[[], 'August'],
[['covid-19'], 'August'],
[['jantung'], 'August'],
[['covid-19'], 'August'],
[['covid-19'], 'August'],
[[], 'August'],
[['covid-19'], 'August'],
[['covid-19'], 'August'],
[['covid-19'], 'August'],
[['covid-19'], 'August'],
[[], 'August'],
[['covid-19'], 'August'],
[[], 'August'],
[['covid-19'], 'August'],
[['covid-19'], 'August'],
[[], 'August'],
[['covid-19'], 'August'],
[['covid-19'], 'August'],
[[], 'August'],
[['covid-19'], 'August'],
[['covid-19', 'covid-19'], 'August'],
[['covid-19'], 'August'],
[['covid-19'], 'July']]
我想按月份的名称计算所有令牌('covid-19'、'jantung'...等),这样我就可以按月获取令牌频率。
这是我的预期输出:
result = [
['covid-19',0,0,0,0,0,0,1,19,17,21,0,0],
['tiktok',0,0,0,0,0,0,0,0,0,1,0,0],
['jantung',0,0,0,0,0,0,0,1,2,2,0,0],
['kanker',0,0,0,0,0,0,0,0,0,1,0,0],
['tenaga kesehatan',0,0,0,0,0,0,0,0,0,1,0,0],
]
请注意 :'0,0,0,0,0,0,1,19,17,21,0,0'
是从一月到十二月的订单以及该月的令牌总和。请建议我一种将嵌套转换为结果列表的方法。
有任何想法吗?
解决方案
你真的不应该在这样的列表中存储不同的数据,看起来像这样的东西怎么样?
{'covid-19': [0, 0, 0, 0, 0, 0, 0, 1, 17, 15, 19, 0],
'jantung': [0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0],
'kanker': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
'tenaga kesehatan': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
'tiktok': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0]}
这是制作这个字典的代码片段:
from collections import defaultdict
result = defaultdict(lambda: [0]*12)
for i in data:
if i[0]:
for j in i[0]:
result[j][datetime.datetime.strptime(i[1],"%B").month - 1] += 1