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

如何遍历Python字典键计算Unicode和并统计碰撞(等值)数量

需求说明

你需要实现的功能为:遍历所有键值对,计算每个键的字符串Unicode编码之和,最终输出求和结果列表,进而统计哈希碰撞数量。

前置注意点

Python原生字典不支持重复键,你给出的示例字典a = {'Andres':234,'Paul':345,'Andres':675}实际存储时只会保留最后一个'Andres':675,无法保留两个Andres键。如果要保留重复键的测试场景,建议将字典改为元组列表结构:[('Andres',234), ('Paul',345), ('Andres',675)]。

正确实现代码

适配重复键场景(元组列表输入)

# 测试数据(保留重复键)
a = [('Andres',234), ('Paul',345), ('Andres',675)]

def get_key_unicode_sum(pairs):
    collisions = []
    for key, _ in pairs:
        # 每次计算新键的和前重置result为0
        result = 0
        for char in key:
            result += ord(char)
        collisions.append(result)
    return collisions

调用get_key_unicode_sum(a)即可得到输出[605, 402, 605]。

后续统计碰撞数量的代码需要修正为:

collision_list = get_key_unicode_sum(a)
collision_count = len(collision_list) - len(set(collision_list))

适配普通无重复键字典场景

如果输入为普通无重复键Python字典,可使用如下代码:

# 普通无重复键字典
a = {'Andres':234,'Paul':345}

def get_key_unicode_sum(input_dict):
    collisions = []
    for key in input_dict:
        result = 0
        for char in key:
            result += ord(char)
        collisions.append(result)
    return collisions
原尝试代码的错误点
  • 遍历字典时误用了未定义的teste变量,应使用传入的参数
  • 字典items是方法,需要加括号写为items()
  • 每次计算新键的Unicode和前没有重置result为0,会累加之前的结果
  • 未定义a_string变量,应使用遍历得到的键k
  • 没有初始化collisions列表,也没有最终返回该列表
  • 原生Python字典无法存储重复键,测试数据结构不符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:45:03