gpt4 book ai didi

python - 如何计算 python 中字典中前 10 个最常见的值

转载 作者:太空狗 更新时间:2023-10-29 21:26:31 26 4
gpt4 key购买 nike

我是 python 和一般编程的新手,所以请多多关照。我正在尝试分析一个包含音乐信息的 csv 文件,并返回前 n 个最常听的乐队。从下面的代码中,每首歌曲都是列表中的一个字典条目,格式如下:

[{'album': 'Exile on Main Street', 'song': 'Happy', 'datetime': '3 Dec 2014 14:08', 'artist': 'The Rolling Stones'}, {'album': 'II', 'song': 'Black Dog', 'datetime': '1 Dec 2014 08:08', 'artist': 'Led Zepplin'}]

from collections import Counter

def count_artist_plays(filename):
with open(filename, 'r') as data:
header = data.readline().strip().split(',')

entries = []
for line in data:
entry = line.strip().split(',')
listens = {}
for info, type in enumerate(header):
listens[type] = entry[info]

entries.append(listens)

for d in entries:
arts = d['artist']
c = Counter(arts)
print c.most_common(10)

如何获取最常见的字符串(带)而不是像下面这样的字符分割?

[('s', 2), ('a', 1), (' ', 1), ('E', 1), ('l', 1), ('o', 1), ('n', 1), ('S', 1), ('v', 1), ('y', 1)]

最佳答案

初始化计数器一次,让为艺术家,并在循环中每次增加一个键(艺术家):

c = Counter()
for d in entries:
arts = d['artist']
c[arts] += 1
print(c.most_common(10))

arts为字符串时,c = Counter(arts)arts中的字符进行计数:

In [522]: collections.Counter('Led Zepplin')
Out[522]: Counter({'e': 2, 'p': 2, ' ': 1, 'd': 1, 'i': 1, 'L': 1, 'l': 1, 'n': 1, 'Z': 1})

对比:

In [523]: c = collections.Counter()

In [524]: c['Led Zepplin'] += 1

In [525]: c['The Rolling Stones'] += 1

In [526]: c.most_common()
Out[526]: [('Led Zepplin', 1), ('The Rolling Stones', 1)]

或者,正如 Jon Clements 指出的那样,建立一个包含所有艺术家的列表,然后对列表进行计数:

c = Counter(d['artist'] for d in entries)
print(c.most_common(10))

请注意,上面使用了 generator expression以避免构建(可能)大型临时列表,同时具有更简洁、可读性更高的语法。

关于python - 如何计算 python 中字典中前 10 个最常见的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27303619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com