Python字典中查找值的唯一元素数量最多的键及对应长度
实现方法
利用max()函数的key参数遍历字典键值对即可实现需求,仅需一次遍历,适配大体积字典场景。
基础实现代码
dict_one = {'a': ['Hanks', 'Bob', 'Bill'], 'b': ['nation', 'nile', 'Jonas']} # 遍历键值对,按值的去重长度排序取最大值 max_key, max_val = max(dict_one.items(), key=lambda item: len(set(item[1]))) max_unique_len = len(set(max_val)) # 按指定格式输出 print(f"key: {max_key}") print(f"length: {max_unique_len}")
运行输出结果:
key: a length: 3
性能优化版本
如果字典值的列表体量较大,重复计算set会浪费性能,可采用生成器提前缓存每个键对应的去重长度,避免重复计算:
# 生成器仅计算一次每个值的去重长度,无额外内存占用 key_len_pair = ((k, len(set(v))) for k, v in dict_one.items()) max_key, max_unique_len = max(key_len_pair, key=lambda x: x[1]) print(f"key: {max_key}") print(f"length: {max_unique_len}")
多最大值匹配场景
如果存在多个键的去重长度相同且均为最大值,上述方法仅会返回第一个匹配的键。需要返回所有符合条件的键可采用如下方案:
# 先计算全局最大去重长度 max_unique_len = max(len(set(v)) for v in dict_one.values()) # 筛选所有匹配的键 all_max_keys = [k for k, v in dict_one.items() if len(set(v)) == max_unique_len] print(f"所有匹配键: {all_max_keys}") print(f"最大长度: {max_unique_len}")
内容的提问来源于stack exchange,提问作者Linus
相关产品推荐
相关产品推荐

