python 去重
天蓬老师
天蓬老师 2017-04-17 12:09:02
[Python讨论组]

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

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

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

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

求大神指教。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(4)
巴扎黑
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 即可。

PHP中文网

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

set(persontel)
伊谢尔伦

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

这是改正后的数据.

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] ]
阿神

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

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

我是这样实现的:

  1. map方法将persontel中的元素转换成str类型,并返回list
  2. set对上面的list去重
  3. eval函数将list中各元素转换成pythondict类型
  4. list类型的数据转换成tuple类型

代码如下:

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 的正解

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号