Python /集合-删除出现次数相同的元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python /集合-删除出现次数相同的元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1609字,纯文字阅读大概需要3分钟。
内容图文
![Python /集合-删除出现次数相同的元素](/upload/InfoBanner/zyjiaocheng/665/14b4443b9bc74595a4b144478fdd3d98.jpg)
范例1:
import collections
list = ['Mike', 'Mike', 'Mike', 'Jhon', 'Jhon', 'Rob', 'Rob', 'Carl', 'Carl']
list_counter = collections.Counter(list)
>> Counter({'Mike': 3, 'Rob': 2, 'Jhon': 2, 'Carl': 2})
范例2:
import collections
list = ['Sam', 'Sam', 'Sam', 'Sam', 'Mike', 'Mike', 'Mike', 'Jhon', 'Jhon', 'Rob', 'Rob']
list_counter = collections.Counter(list)
>> Counter({'Sam': 4, 'Mike': 3, 'Rob': 2, 'Jhon': 2})
我要做的就是验证列表中是否包含2个或更多元素相同次数,并删除它们.
在示例1中,Rob,Jhon和Carl将被删除,它们是3个元素,在列表中出现2次.在示例2中,Rob和Jhon将被删除,而Sam和Mike会没事,并留在列表中.如果列表中仅显示1个元素(例如,Jhon n次),则不会删除任何内容.
解决方法:
如果要删除所有以相同频率出现的名称至少两次:
import collections
lst = ['Mike', 'Mike', 'Mike', 'Jhon', 'Jhon', 'Rob', 'Rob', 'Carl', 'Carl',
"foo","foo","foo","foo","bar", "bar", "bar", "bar"]
list_counter = collections.Counter(lst)
# count the frequency
times = collections.Counter(list_counter.values())
# keep names that do not appear at the same frequency as any other names
lst[:] = [name for name,v in list_counter.items() if times[v] < 2]
print(lst)
这将使您拥有:
['Mike']
如果您还想确保计数不是1:
[name for name, v in list_counter.items() if v == 1 or times[v] < 2]
如果要保留所有Mike,则遍历列表:
import collections
lst = ['Mike', 'Mike', 'Mike', 'Jhon', 'Jhon', 'Rob', 'Rob', 'Carl', 'Carl',
"foo","foo","foo","foo","bar", "bar", "bar", "bar"]
list_counter = collections.Counter(lst)
times = collections.Counter(list_counter.values())
lst[:] = [name for name in lst if times[list_counter[name]] < 2]
print(lst)
这会给你:
['Mike', 'Mike', 'Mike']
内容总结
以上是互联网集市为您收集整理的Python /集合-删除出现次数相同的元素全部内容,希望文章能够帮你解决Python /集合-删除出现次数相同的元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。