我也有類似的類型的字典列表中顯示的圓形列表如何從計算出的指數
d = [{10: "a"}, {20: "b"}, {30: "c"}]
該列表由按鍵排序。我不附格式或數據類型 - 我建這個名單由反正外部源(這是說,它是可以改變的,如果有幫助)
我也有一個變量x
範圍從0
到100
。
我想得到的是列表d
重新排列(或重建或複製到別處),從大於x
的第一個鍵開始。舉例來說(EDITED,對不起,我提出在最初的例子有誤)
- 如果
x == 2
然後d = [{10: "a"}, {20: "b"}, {30: "c"}]
- 如果
x == 12
然後d = [{20: "b"}, {30: "c"}, {10: "a"}]
- 如果
x == 22
然後d = [{30: "c"}, {10: "a"}, {20: "b"}]
- 如果
x == 32
然後d = [{10: "a"}, {20: "b"}, {30: "c"}]
我稱之爲「循環」,因爲它代表「下一個len(d)
元素與key > x
「以封閉的方式。
我將以鏈接if
的形式執行此操作,並且每次都手動創建列表(上述示例涵蓋了這些列表)。除了是一個可怕的解決方案,它不是完全可擴展的,如果len(d)
變大(現在是3
所以最壞的情況下,我會去鏈接if
)。
什麼是Pythonic解決方案來處理這個問題?
是否所有的字典都有一個鍵?你有沒有考慮過使用OrderedDict或者元組列表? – jonrsharpe
是的,他們確實有一個唯一的鑰匙。我沒有考慮OrderedDict或元組列表,但是我可以將數據類型更改爲除了我的if之外的其他解決方案。 – WoJ
字典中的所有密鑰都是獨一無二的,事實上只有一個令我感到驚訝。這將需要更多的信息來確定最佳的數據結構。你的例子不符合描述*「從大於'x'的第一個鍵開始」*。 – jonrsharpe