python - python - 如何根据Python中4个键中的2个键获取唯一的字典列表?
问题描述
我有一个字典列表,其中包含以下项目:
[
{'release_id': 1,
'issue_id': 1,
'release_name': 'example1',
'release_date': '2021-02-11',
},
{'release_id': 1,
'issue_id': 2,
'release_name': 'example1',
'release_date': '2021-02-11',
},
{'release_id': 2,
'issue_id': 3,
'release_name': 'example2',
'release_date': '2021-02-18',
}
]
我想要的基本上是忽略 issue_ids,并拥有一个独特的发布列表,例如:
[
{'release_id': 1,
'release_name': 'example1',
'release_date': '2021-02-11',
},
{'release_id': 2,
'release_name': 'example2',
'release_date': '2021-02-18',
}
]
到目前为止我所做的是工作,但我确信有一种更 Pythonic 的方式来做到这一点:
unique_ids = []
unique_list = []
for i in release_list:
if i['release_id'] not in unique_ids:
unique_ids.append(i['release_id'])
unique_list.append({'release_id': i['release_id],
'release_name': i['release_name],
'release_date': i['release_date'],
})
print(unique_list)
解决方案
尝试这个,
unique_list = []
dict = {}
for ele in release_list :
for k , v in ele.items():
if k == 'issue_id':
continue
else:
dict[k] = v
unique_list.append(dict.copy()) #You need to append a copy, otherwise
# you are just adding references to the same dictionary over and over again:
#Here we use str(i) to create a unique string that represents the dictionary which is used to filter the duplicates.
lst = list({str(i) : i for i in unique_list}.values())
print(lst)
推荐阅读
- c# - 下拉不显示值和文本 asp.net mvc
- python - 在 Apache Cassandra 中混合执行两个 Python 脚本和 DatastaxBulk 加载器脚本以加载到 .csv
- reactjs - api接收到的数据中的ReactJs .map
- node.js - 使用 sequelize 查询 Postgres 嵌套 JSONB 列
- php - 将 JSON 从 MySQL 转换为 PHP
- python - pandas.Dataframe 的列名和类型用 mypy 还是其他静态方式?
- r - 如何循环遍历 r 中多个数据帧中的多个列?
- python - 如何以一定的精度处理python浮点数
- sql - 显示一列的总量
- r - 根据输入数据为 geom_segment 设置变量位置