【发布时间】:2013-08-14 17:56:17
【问题描述】:
我尝试按后进先出的顺序遍历有序字典。
虽然对于标准字典一切正常,但对于 orderedDict 的第一个解决方案反应很奇怪。似乎,虽然popitem() 返回一个键/值对(但以某种方式顺序,因为我不能用两个变量替换kv_pair),然后迭代就完成了。我看不到继续下一个键/值对的简单方法。
虽然我发现了两个可行的替代方案(如下所示),但它们都缺乏普通字典方法的优雅。
根据我在在线帮助中找到的内容,无法做出决定,但我认为我的期望是错误的。还有更优雅的方法吗?
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)时间从任一端弹出。
标签: python python-2.7 dictionary ordereddictionary