gpt4 book ai didi

Python:在嵌套字典中制作字数统计字典

转载 作者:行者123 更新时间:2023-11-30 22:09:13 26 4
gpt4 key购买 nike

我很难制作一个函数来计算每个关键字出现的数字键。

adict = 
{0: {'Fantasy': 6, 'Animation': 1, 'Family': 2, 'Action': 6, 'Comedy': 1, 'Adventure': 8},

1: {'Fantasy': 1, 'Drama': 1, 'Adventure': 9, 'Action': 10, 'Thriller': 1, 'Comedy': 1, 'Romance': 1, 'Science_Fiction': 10},

2: {'Fantasy': 8, 'Animation': 2, 'Adventure': 16, 'Thriller': 3, 'Drama': 1, 'Comedy': 1, 'Family': 4, 'Science_Fiction': 11, 'Horror': 1, 'Action': 15},

3: {'Fantasy': 1, 'Adventure': 5, 'Thriller': 4, 'Comedy': 1, 'Science_Fiction': 2, 'Crime': 3, 'Action': 6},

4: {'Animation': 2, 'Fantasy': 5, 'Adventure': 5, 'Action': 4, 'Comedy': 1, 'Family': 4, 'Romance': 1},

5: {'Fantasy': 1, 'Western': 1, 'Family': 2, 'Adventure': 4, 'Thriller': 3, 'Drama': 3, 'Science_Fiction': 1, 'Romance': 1, 'Crime': 1, 'Animation': 2, 'Action': 5}}

作为输出,我想要每个流派的字典,例如:

{'Fantasy': 6 , 'Western': 1, 'Family':4 ...}

因此,该值是包含该键(流派)的组的数量。例如,“奇幻”在所有组中都出现过(共 6 个),而“西部”仅出现一次,因此为 1。

最佳答案

如果您想要更简单的解决方案,可以使用列表理解。

首先,将字典扁平化为列表。然后计算每个唯一元素在此列表中出现的次数。

# Flatten the dictionary
genres = [genre for v in adict.values() for genre in v.keys()]

# Count each unique element and build a dictionary
occurs = {g: genres.count(g) for g in set(genres)}

# Result:
# {'Action': 6,
# 'Adventure': 6,
# 'Animation': 4,
# 'Comedy': 5,
# 'Crime': 2,
# 'Drama': 3,
# 'Family': 4,
# 'Fantasy': 6,
# 'Horror': 1,
# 'Romance': 3,
# 'Science_Fiction': 4,
# 'Thriller': 4,
# 'Western': 1}

编辑:还有Counter ,来自 Collections 模块的 dict 子类。

from collections import Counter

# Flatten the dictionary (same as before)
genres = [genre for v in adict.values() for genre in v.keys()]

# Create new counter from an iterable
occurs = Counter(genres)

# Result:
# Counter({'Fantasy': 6,
# 'Animation': 4,
# 'Family': 4,
# 'Action': 6,
# 'Comedy': 5,
# 'Adventure': 6,
# 'Drama': 3,
# 'Thriller': 4,
# 'Romance': 3,
# 'Science_Fiction': 4,
# 'Horror': 1,
# 'Crime': 2,
# 'Western': 1})

关于Python:在嵌套字典中制作字数统计字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51991052/

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