簡體   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