Eli*_*ght 17
其他答案都是正确的; 这是不可能的,但你可以自己写.但是,如果您不确定如何实际实现这样的东西,这里是一个完整且有效的实现,它是我刚刚编写和测试的子类dict.(请注意,传递给构造函数的值的顺序是未定义的,但会在稍后传递的值之前出现,并且您可能始终只是不允许使用值初始化有序的dicts.)
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')]
Run Code Online (Sandbox Code Playgroud)
rew*_*oes 16
使用OrderedDict(),自2.7版本开始提供
只是好奇心问题:
from collections import OrderedDict
a = {}
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 #True
print a == c #True
print b == c #False
Run Code Online (Sandbox Code Playgroud)
或者,只需使用time.now()作为元组中的第一个字段,使密钥成为元组.
然后你可以使用dictname.keys(),sort和voila检索密钥!
格里
您无法使用基本dict类执行此操作 - 它按哈希顺序排序.您可以构建自己的字典,它实际上是一个键,值对或某些列表,它们将被订购.