首页 > 解决方案 > 在python中对对象值使用迭代

问题描述

我有一本看起来像这样的字典

id_dict = {
  "dict_one": {
    "ids": [
      {
        "id": 1,
        "start_num": 5
      },
      {
        "id": 2,
        "end_num": 5
      },
      {
        "id": 3,
        "start_num": 20
      },
      {
        "id": 1,
        "end_num": 3
      },
      {
        "id": 2,
        "start_num": 10
      },
      {
        "id": 3,
        "end_num": 5
      }
    ]
  },
  "dict_two": {
    "ids": [
      {
        "id": 1,
        "start_num": 5
      },
      {
        "id": 2,
        "end_num": 5
      },
      {
        "id": 3,
        "start_num": 20
      },
      {
        "id": 1,
        "end_num": 3
      },
      {
        "id": 2,
        "start_num": 10
      },
      {
        "id": 3,
        "end_num": 5
      }
    ]
  }
}

我正在尝试创建一个新字典,其中两个 id 开始和结束 nums 之间存在差异。我匹配哪两个 id 并不重要,我只需要匹配两个。

所以我想返回这样的东西

new_dict = {"num_dif": 2} # for id 1 

但是,数组中有多个字典,并且每组对象的顺序不同。

所以我希望能够写出这样的东西

new_dict = {"num_dif": for values in dict if values["id"] match then subtract values["start_num"] - values["end_num"]}

如果这是可能的,我只是不知道您是否可以在字典中添加一个 for 循环作为值。

标签: pythondictionary

解决方案


尝试使用列表然后dict理解:

l=[x for x in id_dict if x['id']==1]
new_dict = {'num_dict': l[0]['start_num']-l[1]['end_num']}

推荐阅读