[英]Create a list of dictionaries with unique keys from a list of dictionaries with duplicated keys
我有一个词典列表:
records = [{id:123, name:'Course A', enrolled_date:'1st Feb'},
{id:123, name:'Course A', enrolled_date:'1st Jan'},
{id:456, name:'Course B', enrolled_date:'1st Jan'}]
我想从这些数据中创建一个新的字典列表。 新列表应该只包含在该列表范围内具有唯一ids
字典,例如:
new_records = [{id:123, name:'Course A'},
{id:456, name:'Course B'}]
这是我到目前为止尝试过的代码。 它显然不起作用 - 但我已经用尽所有努力来纠正它。
new_records = []
for record in records:
new_id = record['id']
new_name = record['name']
new_dict = {'id':new_id, 'name',new_name}
If new_id not in new_records:
new_records.append(new_dict)
这是基于您提供的代码,但对于大型列表,它的工作确实非常慢,如其他注释中所述。
new_records = []
for record in records:
new_id = record['id']
new_name = record['name']
new_dict = {'id':new_id, 'name': new_name}
if not any(new_record['id'] == new_id for new_record in new_records):
new_records.append(new_dict)
您也可以通过使用一组已经“看到”的条目过滤数组来完成此操作:
records = [{"id":123, "name":'Course A', "enrolled_date":'1st Feb'},
{"id":123, "name":'Course A', "enrolled_date":'1st Jan'},
{"id":456, "name":'Course B', "enrolled_date":'1st Jan'}]
seen = set()
new_dict = [d for d in records if not(d['id'] in seen or seen.add(d['id']))]
# {'id': 123, 'name': 'Course A', 'enrolled_date': '1st Feb'}
# {'id': 456, 'name': 'Course B', 'enrolled_date': '1st Jan'}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.