python - 在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 循环作为值。
解决方案
尝试使用列表然后dict
理解:
l=[x for x in id_dict if x['id']==1]
new_dict = {'num_dict': l[0]['start_num']-l[1]['end_num']}
推荐阅读
- android - StaggeredGridLayoutManager 中错误的项目布局方向取消 RecyclerView Android
- ios - iOS Swift:在字符串中查找匹配单词的范围
- database - 迁移数据库时显示错误语法错误或访问冲突:1067 'domain_status' 的默认值无效
- multicast - 使用 socat 将多播从一个网络复制到另一个网络
- python - 如何将一个 df 中的一列除以 pandas 中不同 df 中的另一列?
- ruby - pod install 命令不成功。返回未安装的红宝石宝石
- azure - Azure FormRecognizer 的邮递员发布请求不起作用
- regex - 使用正则表达式提取 Web 日志数据
- c# - LINQ 查询未统计日期时间验证
- javascript - 轮播项目超过高度..或高度未调整到轮播项目