玩蛇网提供最新Python编程技术信息以及Python资源下载!

python去重元给中有字典项怎么去重

python 中,我得到了一个这样的数据。

persontel = ({'name':'lyli';'tel':'123'},{'name':'linlei';'tel':'125'},{'name':'lyli';'tel':'123'})

我怎么样为这样的数据去重呢?想达到的效果是,最后:

persontel = ({'name':'lyli';'tel':'123'},{'name':'linlei';'tel':'125'})

求大神指教。

persontel = [{'name':'lyli','tel':'123'},{'name':'linlei','tel':'125'},{'name':'lyli','tel':'123'}]
print [dict(t) for t in set([tuple(person.items()) for person in persontel])]

因为 dict 是 unhashable, 转换成 tuple 即可。

如果要保持有序的话, 可以这样, 但是效率不高.

这是改正后的数据.

persontel = ({'name':'lyli','tel':'123'},{'name':'linlei','tel':'125'},    {'name':'lyli','tel':'123'})

然后:

persontel = [ x for i,x in enumerate(persontel) if x not in persontel[:i] ]

集合中的元素没有重复,所以你需要做的仅仅是把列表转成集合。

set(persontel)

我问过相似的问题,结果被人踩了好多遍,深知新手的不容易。后来自己找身边的人问出了解决办法,看你是新手,帮你一把吧!
首先,python没有这样的数据格式,

persontel = ({'name':'lyli';'tel':'123'},{'name':'linlei';'tel':'125'},{'name':'lyli';'tel':'123'})

我是这样实现的:

代码如下:

persontel = ({'name':'lyli','tel':'123'},{'name':'linlei','tel':'125'},{'name':'lyli','tel':'123'})
persontel = tuple(map(eval,set(map(str,persontel))))
print persontel

ps:惭愧惭愧,此答案可以忽略,请参考Zhongwei Sun 的正解

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19785.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月27日 - 11时27分48秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules