栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使字典列表中的值唯一?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使字典列表中的值唯一?

如果初始

d
列表的顺序不重要,则可以将
.items()
每个词典的转换为
frozenset()
,然后将其转换为可哈希的,然后将整个内容转换为
set()
frozenset()
,然后再将其转换
frozenset()
回词典。范例-

uniq_d = list(map(dict, frozenset(frozenset(i.items()) for i in d)))

sets()
不允许重复的元素。虽然您最终会失去列表的顺序。对于Python 2.x,
list(...)
不需要,因为会
map()
返回一个列表。


示例/演示-

>>> import pprint>>> pprint.pprint(d)[{'feature_a': 1, 'feature_b': 'Jul', 'feature_c': 100}, {'feature_a': 2, 'feature_b': 'Jul', 'feature_c': 150}, {'feature_a': 1, 'feature_b': 'Mar', 'feature_c': 110}, {'feature_a': 1, 'feature_b': 'Jul', 'feature_c': 100}, {'feature_a': 1, 'feature_b': 'Jul', 'feature_c': 150}]>>> uniq_d = list(map(dict, frozenset(frozenset(i.items()) for i in d)))>>> pprint.pprint(uniq_d)[{'feature_a': 1, 'feature_b': 'Jul', 'feature_c': 100}, {'feature_a': 1, 'feature_b': 'Jul', 'feature_c': 150}, {'feature_a': 1, 'feature_b': 'Mar', 'feature_c': 110}, {'feature_a': 2, 'feature_b': 'Jul', 'feature_c': 150}]

对于新要求-

但是,如果我还有另一个feature_d但我只想删除feature_a,_b和_c怎么办?

如果两个具有相同feature_a,_b和_c的条目,则无论feature_d中的内容如何,​​都将它们视为相同且重复的条目

一种简单的方法是使用集合和新列表,仅将所需的功能添加到集合中,然后仅使用所需的功能进行检查。范例-

seen_set = set()new_d = []for i in d:    if tuple([i['feature_a'],i['feature_b'],i['feature_c']]) not in seen_set:        new_d.append(i)        seen_set.add(tuple([i['feature_a'],i['feature_b'],i['feature_c']]))

示例/演示-

>>> d = [{'feature_a':1, 'feature_b':'Jul', 'feature_c':100, 'feature_d':'A'},...  {'feature_a':2, 'feature_b':'Jul', 'feature_c':150, 'feature_d': 'B'},...  {'feature_a':1, 'feature_b':'Mar', 'feature_c':110, 'feature_d':'F'},...  {'feature_a':1, 'feature_b':'Mar', 'feature_c':110, 'feature_d':'G'}]>>> seen_set = set()>>> new_d = []>>> for i in d:...     if tuple([i['feature_a'],i['feature_b'],i['feature_c']]) not in seen_set:...         new_d.append(i)...         seen_set.add(tuple([i['feature_a'],i['feature_b'],i['feature_c']]))...>>> pprint.pprint(new_d)[{'feature_a': 1, 'feature_b': 'Jul', 'feature_c': 100, 'feature_d': 'A'}, {'feature_a': 2, 'feature_b': 'Jul', 'feature_c': 150, 'feature_d': 'B'}, {'feature_a': 1, 'feature_b': 'Mar', 'feature_c': 110, 'feature_d': 'F'}]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/391356.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号