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

如何按关键字就地拆分词典

  •  -1
  • Coldchain9  · 技术社区  · 2 年前

    我有一本字典,里面有三个(可变)项:

    d = {"data": [1, 2, 3, 4], "id": 4, "name": "bob"}
    

    我想在不复制任何数据的情况下将其拆分为两个dict。基本上我想删除 id name 键到自己的字典中,但只需指定“我想要所有不是”data“键的键。

    我想避免复制“数据”键值项,因为它的大小可以是15+MB,所以如果有什么不同的话,提取其他项并保持“数据”键值项不变是可取的。

    我的尝试:

    # This will create a new dict for the non "data" key items. Great!
    # But I want the "data" key-value pair to remain in its own dictionary without having to copy it into a new dict
    non_data_dict = {key: d[key] for key in d.keys() - ['data']}
    

    我想要的结果:

    data_dict = {"data": [1,2,3,4]}
    non_data_dict = {"id": 4, "name": "bob"}
    
    1 回复  |  直到 2 年前
        1
  •  2
  •   Timeless    2 年前

    那么...怎么样 pop 正在 这个 data ?

    data_dict = {"data": d.pop("data")}; non_data_dict = d
    

    输出:

    print(f"{data_dict=}", f"{non_data_dict=}", sep="\n")
    
    data_dict={'data': [1, 2, 3, 4]}
    non_data_dict={'id': 4, 'name': 'bob'}