Python-如何在词汇表的顶部插入元素?

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”

我知道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”: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理解返回一个完全不同的文档。