相关疑难解决方法(0)

如何按值对字典进行排序?

我有一个从数据库中的两个字段读取的值字典:字符串字段和数字字段.字符串字段是唯一的,因此这是字典的键.

我可以对键进行排序,但是如何根据值进行排序?

注意:我已阅读Stack Overflow问题如何按Python中字典的值对字典列表进行排序?并且可能可以更改我的代码以获得字典列表,但由于我不需要字典列表,我想知道是否有更简单的解决方案.

python sorting dictionary

3424
推荐指数
31
解决办法
249万
查看次数

我可以将JSON加载到OrderedDict中吗?

好的,我可以使用OrderedDict了json.dump.也就是说,OrderedDict可以用作JSON的输入.

但它可以用作输出吗?如果是这样的话?在我的情况下,我想load进入OrderedDict,这样我就可以保持文件中键的顺序.

如果没有,是否有某种解决方法?

python json load ordereddictionary

415
推荐指数
6
解决办法
13万
查看次数

旧版python的OrderedDict

有序词典是非常有用的结构,但不幸的是,这些最近只适用于3.12.7版本.如何在旧版本中使用有序字典?

python

57
推荐指数
3
解决办法
3万
查看次数

在Swift中编写带有排序键的prettyPrinted JSON对象

我们经常希望使用JSON来实现人类可读性.因此,通常要求在Go中,在.NET中,在Python中,在Java中按字母顺序(或字母数字)对JSON键进行排序,...

但是如何在Swift中按字母顺序输出带有JSON键的JSON?

PrettyPrinted输出很简单:

JSONSerialization.writeJSONObject(jsonObject, to: outputStream, options: [.prettyPrinted], error: nil)
Run Code Online (Sandbox Code Playgroud)

然而,按键不按字母顺序排列以供人类阅读.它们很可能是由NSDictionary.keyEnumerator()给出的顺序.但遗憾的是,我们不能在Swift中继承Dictionary,NSDictionary或CFDictionary,因此我们无法覆盖键顺序的行为.

[编辑:实际上,我们可以继承NSDictionary,请参阅下面的一个答案]

json nsjsonserialization swift

5
推荐指数
1
解决办法
1901
查看次数

Delphi SuperObject以不同于添加的顺序对值进行排序

我正在使用SuperObject来生成JSON.我正在使用的服务器有一些排序数据结果的规范(事实上,这与排序数据有关,这与我关于排序的实际问题无关).问题是,服务器期望按照如何排序的顺序列出这些值,例如......

"sort": {
  "first_sort_field": 1,
  "second_sort_field": 1,
  "third_sort_field": -1,
  "fourth_sort_field": 1
}

1表示升序,-1表示降序.但那不是重要的部分.重要的是,sort必须以这种方式组织对象中的这些值.

为了生成这个对象,我这样做:

var
  O, O2: ISuperObject;
  X: Integer;
  //more
begin
  O:= SO; //main object

  //more

  O2:= SO; //sub object
  for X := 0 to FSort.Count - 1 do begin
    case FSort[X].Direction of
      sdAscending:  O2.I[FSort[X].FieldName]:= 1;
      sdDescending: O2.I[FSort[X].FieldName]:= -1;
    end;
  end;
  O.O['sort']:= O2;

  //more
end;
Run Code Online (Sandbox Code Playgroud)

当我使用SuperObject序列化这个"排序"对象时出现问题.值似乎是重新排列的,所以例如上面的JSON实际上会出现这样的事情:

"sort": {
  "first_sort_field": 1,
  "fourth_sort_field": 1
  "second_sort_field": 1,
  "third_sort_field": -1,
}

这与我的意图不同.这会导致服务器返回以不同于预期的方式排序的响应数据.

问题是,如何使SuperObject按照我添加的顺序而不是自己的顺序序列化数据?我认为它可能是按ABC顺序排序值,但是当组合不同类型的值(字符串,整数,对象,数组等)时,它们不是ABC顺序.我想强制SuperObject按照我添加它的顺序序列化数据.

我能看到的唯一解决方案是通过连接字符串手动序列化此对象.但是我想尽可能避免这种情况 - 这就是我首先使用SuperObject的原因.

delphi sorting serialization json superobject

3
推荐指数
1
解决办法
1575
查看次数