发布于2019-11-19 21:37 阅读(448) 评论(0) 点赞(14) 收藏(2)
从一个排序的可迭代对象开始,我需要按项目的第一个字符对它们进行分组(例如,对从a到z的每个字母进行分组,对数字和符号进行分组)。
对于更具体的示例,假设我有以下列表:
L = ['aa','ab','ac','ba','bb','bc','ca','cb','cc','10','%a','b ',...]
我需要这样的东西:
GL = [['aa','ab','ac'],['ba','bb','bc'],['ca','cb','cc'],['10', '%a','b']]
这样做有哪些选择,哪个是最有效的?
import itertools as it
L = ['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc', '10', '%a', ' b']
sorter = lambda x: x[0].lower() if x and x[0].isalpha() else '}'
GL = [list(v) for k, v in it.groupby(sorted(L, key=sorter), key=sorter)]
返回:
[['aa', 'ab', 'ac'],
['ba', 'bb', 'bc'],
['ca', 'cb', 'cc'],
['10', '%a', ' b']]
您可以使用其他方式代替'}'
将所有非字母字符放在排序中的正确位置。
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/161792/644f30d8bde3b17ff106/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!