繁体   English   中英

从 Python 字典中返回接下来的 N 项

[英]Return the next N items from a Python dictionary

这是一种常见的模式,我们希望返回足够多的一些可迭代来满足消费者,例如批处理或页面显示。 在这种情况下,我们希望它按键升序排列,作为奖励,字典也是按键升序创建的,尽管可能存在间隙。 键是正整数。

例如

{1: "Genesis", 2: "Exodus", 4: "Leviticus", ... , 557: "Revelation"}

有一个现有问题涵盖从 dict 返回前 N 个键:值对获取前 N 个项目。 评论中有趣的一点是,由于 Python 3.6,字典按插入顺序迭代。

问题:

  1. 如果更新字典条目,是否保留此迭代顺序?
  2. 给定上一页最后一个条目的键,是否有一种优雅的 Pythonic 方法可以按键顺序获取下一个 N 条目? (失败了有不优雅的方式吗?)

- 编辑 -

澄清:例如,如果我们知道“Matthew”的 id 为 100,我们应该能够调用:

answer = foo(100, 4) 

并得到答案:

{100: "Matthew", 102: "Mark", 103: "Luke", 107: "John}

然而,当我们得到接下来的 4 个条目时,我们只知道第一个将是大于 107 的最小键,可能是 108,可能是 500。

由于字典可能很大,因此复制所有键或遍历整个集合并不优雅。 (在我的用例中它可能很便宜,但我更喜欢更智能的解决方案。)

  1. 顺序基于键而不是值。 因此,如果一个值被更新,顺序(键)将被保留

  2. 您可以将字典的键作为列表获取。 找到您感兴趣的键的索引,然后根据该列表中的下 N 个键获取值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM