python - 如何在Python中对列表进行分组?

标签 python list

我有一个如下所示的列表列表:

['user1', time, cpus, mem]  
['user1', time, cpus, mem]
['user2', time, cpus, mem]
['user3', time, cpus, mem]

等等..

我只需要每个用户一个列表,其中包含时间、CPU 和内存加在一起。我尝试了一些方法,但无法使其发挥作用。

最佳答案

一种甜蜜、Pythonic 且简洁的方法是:

from collections import defaultdict

l = [                  
    ['user1', 0, 1, 0],                                                    
    ['user2', 2, 2, 2],      
    ['user3', 2, 2, 1],
    ['user3', 1, 1, 2],
    ['user1', 1, 0, 1],
]


merged = defaultdict(lambda: [0, 0, 0])

for user, *values in l:               
     merged[user] = [sum(i) for i in zip(values, merged[user])]

输出:

In : merged
Out: 
defaultdict(<function __main__.<lambda>>,
        {'user1': [1, 1, 1], 'user2': [2, 2, 2], 'user3': [3, 3, 3]})

它使用 defaultdict 和长度为 3 的 list 作为默认值。列表中每个元素的相关用户值都会更新。

关于python - 如何在Python中对列表进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49975482/

相关文章:

python - 将字符串中的字符串和整数与常量整数进行比较的算法

list - 在序言中对原子进行排序

python - 如何检索 Django 中的最后 x 个元素

c# - 询问 - 如何将多个 List<T> 添加到具有特定名称的 List<T>

python - 类型错误 : object of type 'bool' has no len() in sys. argv 长度检查

python - 带有 Homebrew 软件 python 2.7.4 的 pyexiv2

python - mylist.count(mylist) 能否返回非零值?

python - 如何在Python中根据属性对二维列表进行分组?

python - 如何在 Python 中旋转 pandas Dataframe?

python - 使用进程替换作为 Python 的输入文件两次