首页 > 解决方案 > 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)

标签: pythonlistdictionary

解决方案


尝试这个,

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)

推荐阅读