代码之家  ›  专栏  ›  技术社区  ›  Dev

组合来自JSON的列表元素列表

  •  0
  • Dev  · 技术社区  · 5 年前

    示例JSON:

    {
      "data": [
        {
          "ids": [1, 2, 3],
          "category": ["a", "b"]
        },
        {
          "ids": [3, 4, 5, 6],
          "category": ["a","c","d"]
        }
      ]
    }
    

    我需要结合身份证,并制定一个唯一的身份证名单。

    解决方案1:

    data = json.loads(str)["data"]
    
    unique_id_set = set()
    
    for d in data:
        for id in d["ids"]:
            unique_id_set.add(id)
    
    unique_ids = list(unique_id_set)
    

    解决方案2:

    ids = []
    for d in data:
        ids.extend(d["ids"])
    
    unique_ids = list(set(ids))
    

    是否有任何直接有效的JSON实用程序来获取上述场景中的值?

    1 回复  |  直到 5 年前
        1
  •  3
  •   Kevin    5 年前

    这两种方法都是O(整个数据结构中的ID总数),因此您可以随意使用您认为更美观的方法。

    解决方案2降低了时间复杂性。。。

    我不同意。解决方案2可能有一个不那么显式的for循环,但这并不能提高它的效率,因为 list.extend 是O(N),与 set.add s O(1)。

    不是在标准图书馆。Python中唯一包含的json实用程序是 json ,并且该模块中的任何方法都与在加载数据后操纵数据结构无关。一旦数据从文件中取出并放入对象,Python就不再认为它是“JSON”——它只是dict/list/strings/numbers的集合。

        2
  •  0
  •   Chappleton    5 年前