我有一个这样的词典列表:
[{"Audiofile": "test1.mp3", "Time": "2020-09-03 13:47:22.478868", "Author": "Lisa"}, {"Audiofile": "test2.mp3", "Time": "2020-09-03 13:47:32.239118", "Author": "Mike"},
{"Audiofile": "test2.mp3", "Time": "2020-09-03 13:49:15.535216", "Author": "John"}]
最后,在此示例中,我希望有一个这样的词典列表:
[{"test1.mp3": 1}, {"test2.mp3": 2}]
列出所有音频文件及其在此列表中出现的时间。
实现此目标的最佳方法是什么?
答案 0 :(得分:0)
您可以遍历字典并执行此操作,而不是拥有字典列表,而可以生成一个字典作为计数器。
from collections import defaultdict
counter = defaultdict(int)
for audio_data in data_dictionaries: #your list of dictionaries
counter[audio_data['Audiofile']] += 1
如果必须将其作为字典列表获取,则可以使用简单的列表理解来转换此计数器,如下所示:
list_dictionaries = [{k:v} for k,v in counter.items()]
我希望这能解决您的需求-这可以在线性时间内完成所有工作。
答案 1 :(得分:0)
您可以使用collections.Counter
from collections import Counter
res = Counter(x['Audiofile'] for x in d)
print(dict(res))
输出:
{'test1.mp3': 1, 'test2.mp3': 2}
res = [{k: len(list(g))} for k, g in groupby(d, lambda x: x['Audiofile'])]
答案 2 :(得分:0)
Canvas.Left