You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计Python多维字典中元素的出现次数?

统计Python多维字典中元素的出现次数

高效实现方案(用collections.Counter)

直接用Python标准库的Counter可以快速完成计数,代码简洁高效:

from collections import Counter

data = {"AK-47":["Happy","Giggly","Confident"],
"Gelato":["Slumped","Tired","Light","Giggly"],
"Buddah Bliss":["Confused","Euphoria","Hazy"],
"Grandaddy Purple":["Sleepy","Slumped"],
"Laughing Gas":["Giggly","Light","Euphoria"]}

# 将所有子列表合并为一个扁平列表
all_elements = [item for sublist in data.values() for item in sublist]

# 统计每个元素的出现次数
counts = Counter(all_elements)

# 按你想要的格式输出结果
print("、".join(f"{key}: {value}" for key, value in counts.items()))

运行后会输出:Happy: 1、Giggly: 3、Confident: 1、Slumped: 2、Tired: 1、Light: 2、Confused: 1、Euphoria: 2、Hazy: 1、Sleepy: 1

手动实现计数(不用标准库)

如果不想依赖Counter,可以用普通字典手动统计:

data = {"AK-47":["Happy","Giggly","Confident"],
"Gelato":["Slumped","Tired","Light","Giggly"],
"Buddah Bliss":["Confused","Euphoria","Hazy"],
"Grandaddy Purple":["Sleepy","Slumped"],
"Laughing Gas":["Giggly","Light","Euphoria"]}

counts = {}
# 遍历字典中所有的子列表
for values in data.values():
    for item in values:
        # 若元素已在字典中,计数+1;否则初始化为1
        counts[item] = counts.get(item, 0) + 1

# 格式化输出
print("、".join(f"{key}: {value}" for key, value in counts.items()))

现有代码问题说明

你写的countX函数只能统计单个元素在指定列表中的次数,但没有遍历所有元素完成全局计数;后面的循环只是逐个打印字典的键和对应的列表元素,没有执行任何计数逻辑,所以无法得到你想要的统计结果。

内容的提问来源于stack exchange,提问作者Blackasaurus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:01:16