Python-如何在词汇表的顶部插入元素?
我知道Python字典中没有顺序,但我有一个包含字典的JSON文件,我想在每个字典中插入一个元素,当我打开JSON时,我会看到在顶部添加的元素 示例:JSON文件包含: {b:2,“c:3} 添加后应如下所示:Python-如何在词汇表的顶部插入元素?,python,json,dictionary,Python,Json,Dictionary,我知道Python字典中没有顺序,但我有一个包含字典的JSON文件,我想在每个字典中插入一个元素,当我打开JSON时,我会看到在顶部添加的元素 示例:JSON文件包含: {b:2,“c:3} 添加后应如下所示: {“a”:1,“b”:2,“c”:3}您可以使用OrderedDict的小技巧来完成此操作 步骤1:将旧数据存储在某个地方 import json s = {"b":2, "c":3} json.dump(s, open('file.json', 'w')) 数据如下所示:'{“b”
{“a”:1,“b”:2,“c”:3}您可以使用
OrderedDict
的小技巧来完成此操作
步骤1:将旧数据存储在某个地方
import json
s = {"b":2, "c":3}
json.dump(s, open('file.json', 'w'))
数据如下所示:'{“b”:2,“c”:3}'
步骤2:添加新数据时,使用OrderedDict
加载现有数据
from collections import OrderedDict
new_data = OrderedDict({'a' : 1})
new_data.update(json.loads(open('file.json'), object_pairs_hook=OrderedDict))
json.dump(new_data, open('file.json', 'w'))
现在,数据是这样的:
'{“a”:1,“b”:2,“c”:3}'
每个json应该只描述一个对象。你可以用{“a”:1、
替换第一个左括号{
,或者对每个左括号执行相同的操作,这取决于你如何处理嵌套对象。“对象是一组无序的名称/值对。”json.org说。{“a”:1,“b”:2}
和{“b:2”,“a”:1}必须被认为是相等的。如果一个实现依赖于字典中的键顺序,那么它就被破坏了。如果命令很重要,应该使用一对对列表。如果可以修复实现,请考虑这样做。(如果不是,我表示哀悼。)@9000即使实现不依赖于键的顺序,您也可能希望在顶部粘贴一个元素。@pvg:我明白您的意思。JSON是一种非常糟糕的人类可读配置文件格式。缺少注释会立即取消它的资格,但还存在一系列其他问题。如上所述,我表示哀悼;不幸的是,它仍然被广泛使用就是这样。@9000胜过xml。另外,大多数使用JSON进行配置的东西都只接受注释,效果很好-Crockford出于完全不同的原因删除了注释。请查看say、Sublime或VSCode的配置。为什么不使用内置的sorted()
function?返回元组的函数。您无法对内置dict排序,因为它没有排序。您正在更改JSON的基本结构。此外,这是关于维护基于插入的顺序,而不是键或值的自然顺序,在本例中是incidental@l'L'L:毫无疑问,您希望使用OrderedDict
i在你的例子中,你提供的dict理解返回一个完全不同的文档。