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

如何在不使用numpy的情况下筛选字典中值列表长度最大的键?

不用Numpy的纯Python实现方案

当然有!完全可以用纯Python实现这个需求,不需要依赖numpy。下面提供几种简单易懂的方案,适配你想要的两种输出形式(键列表或键值对字典):

方案1:先找最大长度再筛选(直观易读)

这种方法逻辑清晰,先计算所有值列表的最大长度,再遍历字典筛选出符合条件的元素:

获取键列表

k = {'a':[3,4,5] , 'x':[5,4,11] , 'c':[1,3,4] , 'l': [2,3], 'h':[1]}

# 计算所有值列表的最大长度
max_length = max(len(value) for value in k.values())

# 筛选出值长度等于最大长度的键
target_keys = [key for key, value in k.items() if len(value) == max_length]
print(target_keys)  # 输出: ['a', 'x', 'c']

获取键值对字典

如果需要保留键值对结构,只需要稍作修改:

target_dict = {key: value for key, value in k.items() if len(value) == max_length}
print(target_dict)  # 输出: {'a': [3, 4, 5], 'x': [5, 4, 11], 'c': [1, 3, 4]}

方案2:单次遍历高效实现(适合大型字典)

如果你的字典数据量很大,这种方法只需要遍历一次字典,同时记录最大长度和对应的元素,避免两次遍历的开销:

获取键列表

k = {'a':[3,4,5] , 'x':[5,4,11] , 'c':[1,3,4] , 'l': [2,3], 'h':[1]}

max_len = -1
target_keys = []

for key, value in k.items():
    current_len = len(value)
    if current_len > max_len:
        # 发现更长的列表,更新最大长度并重置结果列表
        max_len = current_len
        target_keys = [key]
    elif current_len == max_len:
        # 长度等于当前最大,添加到结果列表
        target_keys.append(key)

print(target_keys)  # 输出: ['a', 'x', 'c']

获取键值对字典

同样可以调整为保留键值对:

max_len = -1
target_dict = {}

for key, value in k.items():
    current_len = len(value)
    if current_len > max_len:
        max_len = current_len
        target_dict = {key: value}
    elif current_len == max_len:
        target_dict[key] = value

print(target_dict)  # 输出: {'a': [3, 4, 5], 'x': [5, 4, 11], 'c': [1, 3, 4]}

这些方法都完全基于Python内置功能,不需要额外依赖,而且逻辑和你的numpy实现思路一致——先确定最大长度,再收集所有符合条件的元素,同时因为Python 3.7+的字典会保留插入顺序,结果的顺序和你原字典的排序完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:41:41