我如何排序JSON值,而转储?



我正在尝试按特定的时间格式转储/排序JSON值。

在问之前,我看了各种各样的问题,如:

  1. 当我尝试排序列表时,我得到了一个错误'dict'对象没有属性(这实际上是一个问题后尝试一些事情)
  2. 按某个键排序JSON文件(最具体的一个,虽然我不使用任何名称键)
  3. Python中的JSON输出排序(没有真正帮助)

我的JSON结构如下:

{
"Arthur": "12/12",
"Lisa": "10/12"
}

日期格式为dd/mm。我想让10/1212/12之前。然而,这在读取JSON时不应该发生,而应该在dumping值时发生。

我尝试使用的代码:

with open(f"saved_date.json", "r", encoding='utf-8') as f:
data = json.load(f) # Just so you can see how I read out the JSON

with open('saved_date.json', 'w', encoding='utf-8') as fpp:
json.dump(data, fpp, indent=2, sort_keys=True) # Sorting the keys does not work obviously
with open('saved_date.json', 'w', encoding='utf-8') as fpp:
json.dump(sorted(data, key=lambda x: datetime.strptime(date, "%d/%m")), fpp, indent=2) # date is individually given in the format mentioned above 

也许这里有人能看出哪里出了问题,或者给我一些建议,告诉我如何更好地组织它。我目前使用:

更新JSON:
try:
data[f"{author}"] = date # author is the one using/executing the code
except:
new = {author: date}
data.update(new)

因为日期是dd/mm格式,所以不能按字母顺序排序;您需要对mm部分进行排序,然后对dd部分进行排序:

data = {'Arthur': '12/12', 'Lisa': '10/12', 'Joe': '31/05'}
json.dumps(dict(sorted(data.items(), key=lambda x: x[1].split('/')[::-1])), indent=2)

输出:

{
"Joe": "31/05",
"Lisa": "10/12",
"Arthur": "12/12"
}
data = {'Arthur': '12/12', 'Lisa': '10/12'}
with open('saved_date.json', 'w', encoding='utf-8') as f:
json.dump(dict(sorted(data.items(), key=lambda x: x[1])), f, indent=2)

输出:

{
"Lisa": "10/12",
"Arthur": "12/12"
}

最新更新