热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将键值对插入字典中的指定位置

如何解决《将键值对插入字典中的指定位置》经验,为你挑选了1个好方法。

如何在从YAML文档加载的python字典的指​​定位置插入键值对?

例如,如果字典是:

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

我想插入元素 'Phone':'1234'

年龄之前姓名之后。这只是一个例子。我要处理的实际字典很大(已解析的YAML文件),因此删除和重新插入可能会比较麻烦(我不太了解)。

如果我可以在OrderedDict中插入指定位置,那也可以。



1> cs95..:

在python <3.7(或cpython <3.6)上,您无法控制标准字典中对的排序。

如果您打算经常执行任意插入,我的建议是使用列表存储键,并使用字典存储值。

mykeys = ['Name', 'Age', 'Class']
mydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} # order doesn't matter

k, v = 'Phone', '123-456-7890'

mykeys.insert(mykeys.index('Name')+1, k)
mydict[k] = v

for k in mykeys:
    print(f'{k} => {mydict[k]}')

# Name => Zara
# PhOne=> 123-456-7890
# Age => 7
# Class => First

如果您打算用其内容不太可能改变的顺序来初始化字典,则可以使用collections.OrderedDict保持插入顺序的结构。

from collections import OrderedDict

data = [('Name', 'Zara'), ('Phone', '1234'), ('Age', 7), ('Class', 'First')] 
odict = OrderedDict(data)
odict
# OrderedDict([('Name', 'Zara'),
#              ('Phone', '1234'),
#              ('Age', 7),
#              ('Class', 'First')])

请注意,OrderedDict它不支持在任意位置插入(它只记住将键插入字典中的顺序)。


推荐阅读
author-avatar
旭峰fd_817
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有