python列表的去重

#需求:#对列表去重:lis = [2,3,5,3,2,4,8,5,6,7,5](目前为三种方法,持续更新。。。。方法思路来源于https://www.cnblogs.com/nyist-xsk/p/7473236.html,感谢了解去重之后解决了一个问题)

lis = [2,3,5,3,2,4,8,5,6,7,5]
#方法一:使用set() 集合,这种方法利用set() 集合的去重。出来的结果是进行升序排好的
lis1 = list(set(lis))
print(lis1) 
#方法二:使用for循环和not in判断 该方法获取到的列表跟之前的顺序是相同的
lis2 = []
for i in lis:
    if i not in lis2:
       lis2.append(i)
print(lis2)
#方法三:使用类itertools中groupby() 的方法 该方法需要先进行排序(根据排序的规则最后输出的结果就是)
import itertools
lis = [2,3,5,3,2,4,8,5,6,7,5]
lis2 = []
lis.sort() #不设置reverse=True 默认是升序,设置是降序,这一步是必须的
lis1 = itertools.groupby(lis)
for k,v in lis1:
    lis2.append(k)
print(lis2)#[2, 3, 4, 5, 6, 7, 8]升序

#其他方法之后更新

感谢https://www.cnblogs.com/nyist-xsk/p/7473236.html作者提供的思路解决了下面的问题。

#需求:对lis = [2,3,5,3,2,4,8,5,6,7,5]计算元素出现的次数。

lis = [2,3,5,3,2,4,8,5,6,7,5]
#去重
lis1 = list(set(lis))
dic = {}
for i in lis1:
    dic[i] = lis.count(i) #计数
print(dic)

#需求如下:给出一个购物车列表,对列表进行计数输出结果

"""
goods = [{"name": "电脑", "price": 1999},
{"name": "罗技鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
{"name": "罗技鼠标", "price": 20},
{"name":"电脑","price":1999},
{"name": "电脑", "price": 2999}]
#输出结果:
new_goods = [{"name":"电脑","price":1999,"count":2},
{"name": "罗技鼠标", "price": 10, "count": 1},
{"name": "罗技鼠标", "price": 20, "count": 1},
{"name": "美女", "price": 998,"count":1},
{"name": "游艇", "price": 20,"count":1},
{"name": "电脑", "price": 2999,"count":1}]
"""
goods = [{"name": "电脑", "price": 1999},
         {"name": "罗技鼠标", "price": 10},
         {"name": "游艇", "price": 20},
         {"name": "美女", "price": 998},
         {"name": "罗技鼠标", "price": 20},
         {"name":"电脑","price":1999},
         {"name": "电脑", "price": 2999}]
#先进行去重
new_goods = []
for good in goods:
    if good not in new_goods:
        new_goods.append(good)
#进行计数
for new_good in new_goods:
    new_good["count"] = goods.count(new_good)
print(new_goods)

 

转载于:https://www.cnblogs.com/yangshier/p/9463213.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值