Я стараюсь перебирать упорядоченный словарь в последнем порядке. Хотя для стандартного словаря все работает нормально, первое решение для упорядоченногоDict реагирует странно. Кажется, что в то время как popitem()
возвращает одну пару ключ/значение (но как-то последовательно, так как я не могу заменить kv_pair
на две переменные), итерация завершается тогда. Я не вижу простого способа перейти к следующей паре ключ/значение.УпорядочилDictionary.popitem() не удалось перебрать все значения?
Хотя я нашел две рабочие альтернативы (см. Ниже), им не хватает элегантности обычного словарного подхода.
Из того, что я нашел в онлайн-справке, невозможно решить, но я предполагаю, что у меня неправильные ожидания. Есть ли более эльгетический подход?
from collections import OrderedDict
normaldict = {"0": "a0.csf", "1":"b1.csf", "2":"c2.csf"}
for k, v in normaldict.iteritems():
print k,":",v
d = OrderedDict()
d["0"] = "a0.csf"
d["1"] = "b1.csf"
d["2"] = "c2.csf"
print d, "****"
for kv_pair in d.popitem():
print kv_pair
print "++++"
for k in reversed(d.keys()):
print k, d[k]
print "%%%%"
while len(d) > 0:
k, v = d.popitem()
print k, v
Если бы дело порядка и вам нужно такое поведение, то лучше использовать 'deque', вы можете выскочить из любого конца в' O (1) 'времени. –