我希望两种情况下的输出相同:
1)testList = [("Sita", 1), ("Sita", 2), ("Ram", 3), ("Ram", 4), ("Shyam", 5)]
我有第一个案例的解决方案
out1 = list(map(lambda v:(v[0], sum(map(itemgetter(1), v[1]))), groupby(testList, itemgetter(0))))
print(out1)
(二)
testList = [("Sita_English", 1), ("Sita_Maths", 2), ("Ram_English", 3), ("Ram_Maths", 4), ("Shyam_English", 5)]
并希望获得与第一种情况相同的输出:
输出:
[('Sita', 3), ('Ram', 7), ('Shyam', 5)]
您可以在
'_'
上拆分,并将其保持为key
到group
:更具可读性的版本是它的等效列表理解:
这需要所有的
'Sita'
、'Ram'
和'Shyam'
结合在一起。在else情况下,您需要在执行groupby
之前按名称排序相关问题 更多 >
编程相关推荐