Python如何从OrderedDict中获取前20个键值对切片
解决方案
方案1:使用itertools.islice(最优推荐,适配Spark大数据场景)
itertools.islice是Python内置的迭代器切片工具,不需要将整个有序字典转为列表占用额外内存,惰性迭代的特性对大体积数据集非常友好,无需安装第三方依赖,完全适配Python 3.10环境。
代码示例:
import collections from itertools import islice # 原有排序逻辑保持不变 sortedResults = collections.OrderedDict(sorted(result.items(), key=lambda x: x[1], reverse=True)) # 直接切片前20条迭代即可 for key, value in islice(sortedResults.items(), 20): print(f"User = {key} Voted {value} times")
如果需要直接生成仅包含前20条的新OrderedDict,可直接通过构造函数生成:
top20_results = collections.OrderedDict(islice(sortedResults.items(), 20))
方案2:使用内置enumerate(无需额外导入依赖)
如果不想引入额外的import,可以用Python内置的enumerate替代手动维护计数器,写法比自定义计数变量更简洁:
sortedResults = collections.OrderedDict(sorted(result.items(), key=lambda x: x[1], reverse=True)) for idx, (key, value) in enumerate(sortedResults.items()): if idx >= 20: break print(f"User = {key} Voted {value} times")
内容的提问来源于stack exchange,提问作者BertC
相关产品推荐
相关产品推荐

