我有这个:
d1 = OrderedDict([('a', '1'), ('b', '2')])
如果我这样做:
d1.update({'c':'3'})
然后我得到了这个:
OrderedDict([('a', '1'), ('b', '2'), ('c', '3')])
但我想要的是:
[('c', '3'), ('a', '1'), ('b', '2')]
而不创建新的字典。
发布于 2013-08-06 20:44:28
您必须创建一个新的OrderedDict
实例。如果你的密钥是唯一的:
d1=OrderedDict([("a",1),("b",2)])
d2=OrderedDict([("c",3),("d",99)])
both=OrderedDict(list(d2.items()) + list(d1.items()))
print(both)
#OrderedDict([('c', 3), ('d', 99), ('a', 1), ('b', 2)])
但如果不是,请注意此行为可能是您所需的,也可能不是:
d1=OrderedDict([("a",1),("b",2)])
d2=OrderedDict([("c",3),("b",99)])
both=OrderedDict(list(d2.items()) + list(d1.items()))
print(both)
#OrderedDict([('c', 3), ('b', 2), ('a', 1)])
发布于 2015-03-26 00:45:13
如果你知道你想要一个'c‘键,但是不知道它的值,那么在你创建字典的时候插入一个带有虚拟值的'c’。
d1 = OrderedDict([('c', None), ('a', '1'), ('b', '2')])
并在以后更改该值。
d1['c'] = 3
发布于 2015-01-22 19:28:42
现在,使用move_to_end(key,last=True)可以做到这一点
>>> d = OrderedDict.fromkeys('abcde')
>>> d.move_to_end('b')
>>> ''.join(d.keys())
'acdeb'
>>> d.move_to_end('b', last=False)
>>> ''.join(d.keys())
'bacde'
https://docs.python.org/3/library/collections.html#collections.OrderedDict.move_to_end
https://stackoverflow.com/questions/16664874
复制相似问题