如何移除元组列表中field#2重复的元素(保留单个实例)
元组列表按第二个字段去重的解决方法
你当前使用dict.fromkeys(group)未达成预期,是因为字典将整个元组作为键,而示例中每个元组的第一个字段不同,所有元组都会被判定为唯一键,无法实现按第二个字段去重的需求。
以下是两种满足需求的实现方式:
保留第一个出现的实例
通过遍历列表,用集合记录已出现的第二个字段,仅添加未出现过的元组:
#!/usr/bin/env python3 group = ( (1658, 'alps no shoujo heidi'), (1659, 'alps no shoujo heidi'), (1660, 'alps no shoujo heidi'), (1661, 'alps no shoujo heidi'), (1662, 'alps no shoujo heidi'), (1663, 'alps no shoujo heidi'), ) seen = set() titles = [] for item in group: if item[1] not in seen: seen.add(item[1]) titles.append(item) print(titles) # 输出: [(1658, 'alps no shoujo heidi')]
保留最后一个出现的实例
利用字典键的唯一性,遍历过程中用后续元组覆盖同字段的先前记录,最终提取字典值即可:
#!/usr/bin/env python3 group = ( (1658, 'alps no shoujo heidi'), (1659, 'alps no shoujo heidi'), (1660, 'alps no shoujo heidi'), (1661, 'alps no shoujo heidi'), (1662, 'alps no shoujo heidi'), (1663, 'alps no shoujo heidi'), ) title_dict = {item[1]: item for item in group} titles = list(title_dict.values()) print(titles) # 输出: [(1663, 'alps no shoujo heidi')]
内容的提问来源于stack exchange,提问作者ghost239
相关产品推荐
相关产品推荐

