如何从Python已排序的dictionary中提取前N个元素?
如何获取排序后字典的前N个元素
嘿,这事儿超简单的!先给你划个重点:你用sorted()得到的sorted_dict其实不是字典,而是一个由(key, value)元组组成的列表——这就好办了,直接用Python的列表切片就能轻松拿到前N个元素。
先给你修正下原代码里的小坑:别用dict当变量名哦,这是Python的内置类型,会覆盖掉系统自带的dict类,建议换成my_dict这类安全的名字。
步骤1:排序后直接切片取前N个
假设你要取前3个元素,代码可以这么写:
import operator # 换个不会冲突的变量名 my_dict = {} my_dict[identifier] = dst # 这里identifier和dst是你的键值对 sorted_list = sorted(my_dict.items(), key=operator.itemgetter(1)) # 取前N个,这里示例N=3 top_n_elements = sorted_list[:3] print(top_n_elements)
输出会是类似[(key1, value1), (key2, value2), (key3, value3)]的列表,已经按value从小到大排好序了。
步骤2:(可选)把前N个元素转回字典
如果需要把这些元素变回字典格式,直接用dict()包裹切片结果就行:
top_n_dict = dict(top_n_elements) print(top_n_dict)
额外小技巧:取最大的N个元素
要是你想按value从大到小排序,取最大的N个,只需要给sorted()加个reverse=True参数:
sorted_list_desc = sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True) top_n_largest = sorted_list_desc[:3] print(top_n_largest)
内容的提问来源于stack exchange,提问作者cswah
相关产品推荐
相关产品推荐

