python - 按元组的第二个和第三个值对三元素元组的列表进行排序和计数
问题描述
我有这样的元组列表
l =[(1, 'project1', 'errorMessage1'),
(2, 'project1', 'errorMessage1'),
(3, 'project2', 'errorMessage1'),
(1, 'project3', 'errorMessage2')]
我希望第一列包含具有不同项目和错误消息的所有值的总和,如下所示:
[(3, 'project1', 'errorMessage1'),
(3, 'project2', 'errorMessage1'),
(1, 'project3', 'errorMessage3')]
我尝试了 Counter 和其他一些东西,但不知道我应该如何处理这个问题。
解决方案
您可以使用字典来保存计数的总和来解决此问题:
l =[(1, 'project1', 'errorMessage1'),
(2, 'project1', 'errorMessage1'),
(3, 'project2', 'errorMessage1'),
(1, 'project3', 'errorMessage2')]
d = {}
for t in l:
if t[1:] in d:
d[t[1:]] += t[0]
else:
d[t[1:]] = t[0]
输出:
>>> d
{('project1', 'errorMessage1'): 3,
('project2', 'errorMessage1'): 3,
('project3', 'errorMessage2'): 1}
添加列表推导以重新格式化结果:
>>> [(v, *k) for k, v in d.items()]
[(3, 'project1', 'errorMessage1'),
(3, 'project2', 'errorMessage1'),
(1, 'project3', 'errorMessage2')]
推荐阅读
- bash - 是什么导致 for 循环挂起?
- json - 键入'_InternalLinkedHashMap
' 不是类型转换中 'Article' 的子类型 - websphere - IBM MFP 8 - 在适配器中创建动态网页
- jquery - 未捕获的引用错误:acf 未定义
- python - 如何在 NetworkX 中查找节点父节点信息?
- react-native - 如何在带有 react-native 的 WebView 中使用 window.print 方法
- javascript - 如何将功能逻辑移动到减速器以更新状态
- angular - Angular 2+ (8) Material Snack Bar 显示但不关闭
- reactjs - 在新的反应应用程序上运行 npm start 时出现问题
- ruby-on-rails - 从 csv 导入 Rails 时,有没有办法分配默认的 YYYY?