python - 合并和添加嵌套列表
问题描述
现在我有一个嵌套列表,我需要一个函数来创建一个新列表,如果它们相同,则组合元素 0 和元素 1。如果它们相同,它还会将第三个元素添加在一起。
样本输入:
input_list = [['123', '6', '2'], ['123','4','55'], ['123','6','3']
预期输出:
output_list = [['123','6','5'], ['123','4','55']]
123 和 6 是相同的,所以它结合起来,然后 2+3=5
123,4,55 没有任何重复,所以它保持不变
提前谢谢你
解决方案
对于这个问题,因为内部列表中位置 0 和 1 的元素需要相同,才能将第三个值相加然后显示结果,所以只需对前两个值进行哈希处理,如果出现一些重复,那么添加该哈希对的值。
在 python dict 中提供了这个特性,所以你可以这样实现它
input_list = [['123', '6', '2'], ['123','4','55'], ['123','6','3']]
res = {}
for i in input_list:
if (i[0], i[1]) not in res:
res.update({(i[0], i[1]):int(i[2])})
else:
res[(i[0],i[1])]+=int(i[2])
output_list = [[k[0],k[1], str(v)] for k,v in res.items()]
print(output_list)
输出
[['123', '6', '5'], ['123', '4', '55']]
推荐阅读
- ios - 在获得的项目上安装 Cocoapods 时遇到问题
- java - apache Jclouds 与 quarkus 兼容吗?
- javascript - 为什么我的组件在 React 组件开发工具中显示为匿名
- vb.net - 仅通过更改类型约束和返回类型就不可能在 VB.NET 中重载泛型方法吗?
- android - 此版本中使用了弃用的 Gradle 功能,使其与 Gradle X 不兼容
- python - 如何一次覆盖数组的多个变量?
- javascript - 为什么 JSX 不运行而 React 可以正常工作
- php - Laravel 8 收到 ReflectionException 错误
- ios - 如何实现此功能以在 UITextField 中输入 DOB
- asp.net-mvc - 从@Html.Action 调用时图像不显示