程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何根据项目的第一个字符将项目归为可迭代对象?

发布于2019-11-19 21:37     阅读(451)     评论(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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0
收藏该文
已收藏

评论内容:(最多支持255个字符)