如何按插入顺序从字典中检索项目?

是否可以按插入顺序从Python字典中检索项目?

胡子哥哥
浏览 267回答 3
3回答

慕侠2389804

dict如果您使用的是CPython 3.6+(或其他任何Python实现的Python 3.7+),则默认情况下,标准Python会执行此操作。在旧版本的Python上,您可以使用collections.OrderedDict。

HUWWW

其他答案是正确的。这是不可能的,但是您可以自己编写。但是,如果您不确定如何实际实现这样的东西,这是一个完整且有效的实现,该类将我刚刚编写和测试的dict子类化。(请注意,传递给构造函数的值的顺序是不确定的,但是会在以后传递值之前出现,并且您始终可以始终不允许使用值初始化有序的dict。)class ordered_dict(dict):    def __init__(self, *args, **kwargs):        dict.__init__(self, *args, **kwargs)        self._order = self.keys()    def __setitem__(self, key, value):        dict.__setitem__(self, key, value)        if key in self._order:            self._order.remove(key)        self._order.append(key)    def __delitem__(self, key):        dict.__delitem__(self, key)        self._order.remove(key)    def order(self):        return self._order[:]    def ordered_items(self):        return [(key,self[key]) for key in self._order]od = ordered_dict()od["hello"] = "world"od["goodbye"] = "cruel world"print od.order()            # prints ['hello', 'goodbye']del od["hello"]od["monty"] = "python"print od.order()            # prints ['goodbye', 'monty']od["hello"] = "kitty"print od.order()            # prints ['goodbye', 'monty', 'hello']print od.ordered_items()# prints [('goodbye','cruel world'), ('monty','python'), ('hello','kitty')]

翻翻过去那场雪

使用OrderedDict(),从2.7版本开始可用只是出于好奇:from collections import OrderedDicta = {}b = OrderedDict()c = OredredDict()a['key1'] = 'value1'a['key2'] = 'value2'b['key1'] = 'value1'b['key2'] = 'value2'c['key2'] = 'value2'c['key1'] = 'value1'print a == b #Trueprint a == c #Trueprint b == c #False
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python