首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在OrderedDict的开头添加元素?

如何在OrderedDict的开头添加元素?
EN

Stack Overflow用户
提问于 2013-05-21 15:56:35
回答 8查看 139.1K关注 0票数 102

我有这个:

代码语言:javascript
复制
d1 = OrderedDict([('a', '1'), ('b', '2')])

如果我这样做:

代码语言:javascript
复制
d1.update({'c':'3'})

然后我得到了这个:

代码语言:javascript
复制
OrderedDict([('a', '1'), ('b', '2'), ('c', '3')])

但我想要的是:

代码语言:javascript
复制
[('c', '3'), ('a', '1'), ('b', '2')]

而不创建新的字典。

EN

回答 8

Stack Overflow用户

发布于 2013-08-06 20:44:28

您必须创建一个新的OrderedDict实例。如果你的密钥是唯一的:

代码语言:javascript
复制
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)])

但如果不是,请注意此行为可能是您所需的,也可能不是:

代码语言:javascript
复制
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)])
票数 13
EN

Stack Overflow用户

发布于 2015-03-26 00:45:13

如果你知道你想要一个'c‘键,但是不知道它的值,那么在你创建字典的时候插入一个带有虚拟值的'c’。

代码语言:javascript
复制
d1 = OrderedDict([('c', None), ('a', '1'), ('b', '2')])

并在以后更改该值。

代码语言:javascript
复制
d1['c'] = 3
票数 6
EN

Stack Overflow用户

发布于 2015-01-22 19:28:42

现在,使用move_to_end(key,last=True)可以做到这一点

代码语言:javascript
复制
>>> 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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16664874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档