找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3346|回复: 6

[求助] 把一个列表中含有某些相同字符的元素分成一组

47

主题

105

帖子

105

积分

侠客

积分
105
aggopie 发表于 2018-9-19 09:38:37 | 显示全部楼层 |阅读模式
本帖最后由 aggopie 于 2018-9-19 09:41 编辑

["SHFE.al", "SHFE.cu", "SHFE.zn",
  "CZCE.SR","CZCE.CF","CZCE.CY","CZCE.ZC",
   "DCE.m","DCE.y","DCE.a","DCE.b","DCE.p"
    "CFFEX.IF","CFFEX.IH","CFFEX.IC","CFFEX.TS",
      "INE.sc"]


怎样把上面这样的列表中有某些相同字符分别划分到一个列表,比如把带有SHFE的分为一个列表,CZCE的分为一个列表,DCE的分为一个列表,但是有某些相同字符有时候有不确定是哪些,比如有时候会有SHFE,CZCE,有时候会是其他的,比如INE,off等
回复

使用道具 举报

5

主题

13

帖子

13

积分

贫民

积分
13
ssaxi 发表于 2018-10-6 09:04:45 | 显示全部楼层
显然是用正则表达式了。
回复 支持 0 反对 1

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-9-19 19:49:18 | 显示全部楼层
用pandas
内建itertools里的groupby也可以,自己去研究一下

import pandas as pd
a=["SHFE.al", "SHFE.cu", "SHFE.zn",
  "CZCE.SR","CZCE.CF","CZCE.CY","CZCE.ZC",
   "DCE.m","DCE.y","DCE.a","DCE.b","DCE.p",
    "CFFEX.IF","CFFEX.IH","CFFEX.IC","CFFEX.TS",
      "INE.sc"]
df=pd.DataFrame(a,columns=['a'])
df['temp']=df['a'].apply(lambda x: x.split('.')[0])
grouped=df.groupby('temp')['a']
for i,data in grouped:
      print(list(data))
Screenshot from 2018-09-19 19-44-23.png
回复 支持 1 反对 0

使用道具 举报

47

主题

105

帖子

105

积分

侠客

积分
105
aggopie  楼主| 发表于 2018-9-23 14:14:11 | 显示全部楼层
多谢,多谢
回复

使用道具 举报

0

主题

27

帖子

27

积分

贫民

积分
27
艾幻翔 发表于 2018-11-21 17:37:08 | 显示全部楼层
献丑
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Created by lightwave on 2017/9/6
  4. # Copyright (c) 2017 lightwave. All rights reserved.
  5. from collecti** import defaultdict

  6. temp_list = ["SHFE.al", "SHFE.cu", "SHFE.zn",
  7.              "CZCE.SR", "CZCE.CF", "CZCE.CY", "CZCE.ZC",
  8.              "DCE.m", "DCE.y", "DCE.a", "DCE.b", "DCE.p",
  9.              "CFFEX.IF", "CFFEX.IH", "CFFEX.IC", "CFFEX.TS",
  10.              "INE.sc"]

  11. key_func = lambda x: x.split(".")[0]

  12. result_dict = defaultdict(list)
  13. for item in temp_list:
  14.     key = key_func(item)
  15.     result_dict[key].append(item)

  16. print(result_dict.values())
复制代码


group_by有个缺点是相同的内容必须是连续的或者说是排过序的
回复 支持 反对

使用道具 举报

47

主题

105

帖子

105

积分

侠客

积分
105
aggopie  楼主| 发表于 2018-12-10 15:54:15 | 显示全部楼层

多多学习了
回复 支持 反对

使用道具 举报

0

主题

102

帖子

102

积分

侠客

积分
102
傻眼貓咪 发表于 2021-8-7 16:01:33 | 显示全部楼层
  1. myList =  [
  2.     'SHFE.al', 'SHFE.cu', 'SHFE.zn',
  3.     'CZCE.SR', 'CZCE.CF', 'CZCE.CY',
  4.     'CZCE.ZC', 'DCE.m', 'DCE.y',
  5.     'DCE.a', 'DCE.b', 'DCE.p',
  6.     'CFFEX.IF', 'CFFEX.IH', 'CFFEX.IC',
  7.     'CFFEX.TS', 'INE.sc'
  8. ]

  9. def array(data: list) -> list:
  10.     category = []
  11.     mySet = set()
  12.     final = []
  13.     for i in data:
  14.         a, b = i.split('.')
  15.         category.append((a, b))
  16.         mySet.add(a)
  17.     for i in mySet:
  18.         a = []
  19.         for j in category:
  20.             if j[0] == i:
  21.                 a.append('.'.join(j))
  22.         final.append(a)
  23.     return final

  24. print(array(myList))
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表