python - 根据类别对列表进行分组

标签 python list split group-by categories

我的代码以列表形式输出

def extractKeywords():
    <code> 
    return list

list = []
data = extractKeywords()
for x in range(0,5):
    get = data[0][x]
    list.append(get)
print list12

输出列表为

['LION', 'tv', 'TIGER', 'keyboard', 'cd-writer','ELEPHANT']

我如何将此列表分为两组,例如(预期输出)

Animals = ['LION', 'TIGER', 'ELEPHANT']
Electronics = ['tv', 'keyboard', 'cd-writer']

所有动物均采用大写字母,电子产品均采用小写字母

最佳答案

此解决方案使用 itertools.groupby 来避免遍历列表两次。

>>> from itertools import groupby
>>> data = ['LION', 'tv', 'TIGER', 'keyboard', 'cd-writer','ELEPHANT']
>>> # upper case letters have lower `ord` values than lower case letters
>>> sort_by_case = sorted(data, key=lambda word: ord(word[0]))
>>> sort_by_case
['ELEPHANT', 'LION', 'TIGER', 'cd-writer', 'keyboard', 'tv']
>>> # group the words according to whether their first letter is upper case or not
>>> group_by_case = groupby(sort_by_case, lambda word: word[0].isupper())
>>> # use tuple unpacking to assign the two groups to appropriate variables
>>> upper_case, lower_case = [list(g) for (k, g) in group_by_case]
>>> upper_case
['ELEPHANT', 'LION', 'TIGER']
>>> lower_case
['cd-writer', 'keyboard', 'tv']

关于python - 根据类别对列表进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19559708/

相关文章:

python - 如何将大型 CSV 数据文件分解为单个数据文件?

java - 从 Java 调用 Python 脚本。我应该使用 Docker 吗?

python - OpenCV canny 边缘检测在理想正方形上无法正常工作

python - 检查是否安装了python 3的问题

java - 如何在Scala中写入CSV文件?

ruby - 用多个定界符拆分字符串

python - 在每第二次出现未知元素后拆分字符串

ios - 在 Split View Controller iOS8 Objective C 中从右侧打开主视图

Java通过替换特殊字符来转换一组字符串

python - 检查Python中的元素是否乱序