如何从Python字典中提取占总数量N%的键值对
实现方案
Python 3.7及以上版本默认保留字典的插入顺序,如果你需要按插入顺序提取前N%的条目,可以直接按以下步骤实现:
- 计算待提取的条目数量:用字典总长度乘以N%后取整,你可以根据业务需要选择向下取整、四舍五入或者向上取整,示例场景用向下取整即可
- 截取字典前k个键值对生成新字典
按插入顺序提取的代码示例
x = {"a": 1, "b": 2, "c": 3, "d":4, "e": 5, "f": 6} n_percent = 50 # 提取比例,可自行修改 # 计算需要提取的条目数 k = int(len(x) * n_percent / 100) # 提取前k个键值对 result = dict(list(x.items())[:k]) print(result) # 输出:{'a': 1, 'b': 2, 'c': 3}
其他常用场景
随机提取N%的条目
如果不需要按固定顺序,要随机抽取的话,可以先打乱键值对顺序再截取:
import random x = {"a": 1, "b": 2, "c": 3, "d":4, "e": 5, "f": 6} n_percent = 50 k = int(len(x) * n_percent / 100) items = list(x.items()) random.shuffle(items) result = dict(items[:k])
按指定排序规则提取
如果是3.7以前的Python版本,或者需要按键/值的排序规则提取,可以先排序再截取,比如按键的字母正序提取:
x = {"a": 1, "b": 2, "c": 3, "d":4, "e": 5, "f": 6} n_percent = 50 k = int(len(x) * n_percent / 100) # 按键排序,你可以修改key参数自定义排序规则 sorted_items = sorted(x.items(), key=lambda item: item[0]) result = dict(sorted_items[:k])
内容的提问来源于stack exchange,提问作者Seth
相关产品推荐
相关产品推荐

