У меня есть список dicts подобногоКак отобразить циклический список из расчетного показателя
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
).
Что было бы питоническим решением для этого?
У всех словарей есть один ключ? Считаете ли вы использование 'OrderedDict' или список кортежей? – jonrsharpe
Да, у них есть единственный и уникальный ключ. Я не рассматривал 'OrderedDict' или список кортежей, но я могу изменить тип данных на все, что удобно для решения, отличного от my' if's. – WoJ
Все ключи в словаре уникальны, это был факт, что меня только удивил. Для определения наилучшей структуры данных потребуется гораздо больше информации. Ваши примеры не соответствуют описанию *, начиная с первого ключа, большего, чем 'x' * *. – jonrsharpe