我有一个具有多个属性的对象列表。我想根据对象的一个属性(国家代码)筛选列表,即
当前列表elems = [{'region_code': 'EUD', 'country_code': 'ROM', 'country_desc': 'Romania', 'event_number': '6880'},
{'region_code': 'EUD', 'country_code': 'ROM', 'country_desc':'Romania', 'event_number': '3200'},
{'region_code': 'EUD', 'country_code': 'ROM', 'country_desc': 'Romania', 'event_number': '4000'},
{'region_code': 'EUD', 'country_code': 'SVN', 'country_desc': 'Slovenia', 'event_number': '6880'},
{'region_code': 'EUD', 'country_code': 'NLD', 'country_desc':'Netherlands', 'event_number': '6880'},
{'region_code': 'EUD', 'country_code': 'BEL', 'country_desc':'Belgium', 'event_number': '6880'}]
所需列表
^{pr2}$
我可以通过创建一个字典和一个for循环来实现这一点,但我觉得在python中有一种更简单的方法使用filter()或reduce()函数,我只是不知道怎么做。在
有人可以使用内置的python函数简化下面的代码吗?性能是一个重要因素,因为实际数据将非常可观。
工作代码:unique = {}
for elem in elems:
if elem['country_code'] not in unique.keys():
unique[elem['country_code']] = elem
print(unique.values())
值得注意的是,我也尝试了下面的代码,但它的性能比当前的工作代码差:unique = []
for elem in elems:
if not any(u['country_code'] == elem['country_code'] for u in unique):
unique.append(elem)