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

统计字典中多值键的匹配值对出现次数

字典值对出现次数统计解决方案

问题剖析

你的需求是统计字典中每个键对应值列表(值对)的重复次数,但原有代码存在两处问题:

  • 语法错误:len(set(v))' != 1 多了一个多余的单引号,会直接导致代码运行报错
  • 逻辑偏差:代码逻辑是统计包含'1.0'的元素次数,而非统计整个值对的重复次数

正确实现代码

方法一:使用标准库Counter(推荐)

利用Python内置的collections.Counter可以高效统计可哈希对象的出现次数。由于列表是不可哈希类型,需要先将值列表转为元组(元组可哈希)再进行统计。

from collections import Counter

df_dict = {
    'apple': ['1.0', '3.0'],
    'banana': ['2.0', '5.0'],
    'orange': ['1.0', '3.0'],
    'plum': ['2.0', '1.0']
}

def pair_count(df_dict):
    # 将值列表转为元组后统计次数
    value_counts = Counter(tuple(v) for v in df_dict.values())
    # 按需求格式输出结果
    for pair, count in value_counts.items():
        print(f"{list(pair)}: {count}", end=" ")

pair_count(df_dict)

输出结果

['1.0', '3.0']: 2 ['2.0', '5.0']: 1 ['2.0', '1.0']: 1

方法二:手动实现统计(不依赖标准库)

如果不想使用内置库,可以手动用字典记录每一组值对的出现次数:

df_dict = {
    'apple': ['1.0', '3.0'],
    'banana': ['2.0', '5.0'],
    'orange': ['1.0', '3.0'],
    'plum': ['2.0', '1.0']
}

def pair_count(df_dict):
    count_dict = {}
    for v in df_dict.values():
        # 转元组作为字典键(列表不能当键)
        key = tuple(v)
        count_dict[key] = count_dict.get(key, 0) + 1
    # 按需求格式输出
    for pair, count in count_dict.items():
        print(f"{list(pair)}: {count}", end=" ")

pair_count(df_dict)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:54:55