[英]Return the next N items from a Python dictionary
这是一种常见的模式,我们希望返回足够多的一些可迭代来满足消费者,例如批处理或页面显示。 在这种情况下,我们希望它按键升序排列,作为奖励,字典也是按键升序创建的,尽管可能存在间隙。 键是正整数。
例如
{1: "Genesis", 2: "Exodus", 4: "Leviticus", ... , 557: "Revelation"}
有一个现有问题涵盖从 dict 返回前 N 个键:值对获取前 N 个项目。 评论中有趣的一点是,由于 Python 3.6,字典按插入顺序迭代。
问题:
- 编辑 -
澄清:例如,如果我们知道“Matthew”的 id 为 100,我们应该能够调用:
answer = foo(100, 4)
并得到答案:
{100: "Matthew", 102: "Mark", 103: "Luke", 107: "John}
然而,当我们得到接下来的 4 个条目时,我们只知道第一个将是大于 107 的最小键,可能是 108,可能是 500。
由于字典可能很大,因此复制所有键或遍历整个集合并不优雅。 (在我的用例中它可能很便宜,但我更喜欢更智能的解决方案。)
顺序基于键而不是值。 因此,如果一个值被更新,顺序(键)将被保留
您可以将字典的键作为列表获取。 找到您感兴趣的键的索引,然后根据该列表中的下 N 个键获取值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.