如何获取字典中元素数量最多和最少的键及对应计数?
解决字典中对应列表元素数量的最值问题
你的问题出在max(hosp, key=hosp.get)的逻辑上——这个写法是在比较列表本身的内容(按元素的字典序),而不是列表的元素数量。要实现需求,只需把比较逻辑改成基于列表的长度即可,无需导入任何模块。
基础解法(单个最值键)
直接使用len()计算列表长度作为比较依据:
# 示例字典,实际可替换为你的真实数据 hosp = { 'rank': [1, 2, 3, 4, 5], 'trolley': [5, 10, 15, 25, 30], 'ward': [0, 12, 10, 8, 3], 'patients': [200, 100, 1000, 500, 375] } # 找元素数量最多的键及对应数量 max_key = max(hosp, key=lambda k: len(hosp[k])) max_count = len(hosp[max_key]) # 找元素数量最少的键及对应数量 min_key = min(hosp, key=lambda k: len(hosp[k])) min_count = len(hosp[min_key]) print(f"元素数量最多的键是: {max_key},共 {max_count} 个元素") print(f"元素数量最少的键是: {min_key},共 {min_count} 个元素")
进阶解法(处理多个键同最值的情况)
如果存在多个键对应的列表长度相同且同为最大/最小值,用以下代码可以一次性列出所有符合条件的键:
key_lengths = [(key, len(value)) for key, value in hosp.items()] # 获取最大长度及对应键 max_length = max(length for _, length in key_lengths) max_keys = [key for key, length in key_lengths if length == max_length] # 获取最小长度及对应键 min_length = min(length for _, length in key_lengths) min_keys = [key for key, length in key_lengths if length == min_length] print(f"元素数量最多的键: {', '.join(max_keys)},共 {max_length} 个元素") print(f"元素数量最少的键: {', '.join(min_keys)},共 {min_length} 个元素")
实际数据测试
假设你的真实数据中patients对应220个元素,trolley对应64个元素,其他键的列表长度介于两者之间,运行代码后会输出:
元素数量最多的键是: patients,共 220 个元素 元素数量最少的键是: trolley,共 64 个元素
内容的提问来源于stack exchange,提问作者optzlw
相关产品推荐
相关产品推荐

